项目1111

中文显示姓名列和手机号

SELECT contact_name AS '姓名', contact_phone AS '手机号' FROM 2_公司id;

使用explain测试给出的查询语句,显示走了索引查询

EXPLAIN SELECT * FROM `7_订单数量` WHERE `countid` LIKE 'e%';

统计用户订单信息,查询所有用户的下单数量,并进行倒序排序。使用聚合函数查询所有用户的订单数量,倒序拍列结果

SELECT   user_id ,sum(count_id) as '订单数量' from `4_订单id`
GROUP BY user_id
ORDER BY sum(count_id)  DESC;

 

显示用户信息,显示用户钱包信息,进行多表联合查询

SELECT 1_用户id.username, 1_用户id.name, 8_账户表.balance,1_用户id.password,1_用户id.email,1_用户id.gender
FROM 1_用户id
JOIN 8_账户表 ON 1_用户id.user_id = 8_账户表.user_id;

查看订单中下单最多的产品对应的类别正确使用聚合函数,正确使用子查询

SELECT product_name
FROM (SELECT product_name, COUNT(*) AS order_countFROM 5_详情idGROUP BY product_name
) AS subquery
ORDER BY order_count DESC
LIMIT 1;

查询下单总金额最多的用户,并查询用户的全部信息与当前钱包余额。正确使用聚合函数,正确使用子查询,正确进行多表联合查询

SELECT u.*, a.balance
FROM 1_用户id u
JOIN 8_账户表 a ON u.user_id = a.user_id
WHERE u.user_id = (SELECT user_idFROM (SELECT user_id, SUM(price * quantity) AS total_amountFROM 4_订单id oJOIN 5_详情id d ON o.order_id = d.order_idGROUP BY user_id) AS subqueryORDER BY total_amount DESCLIMIT 1
);

5、存储过程创建

1、添加一个用户下订单的存储过程,存储过程名称叫做【create_order_infos()】

2、要求传入创建订单所必须的参数内容,例如:用户编号、商品编号、购买数量等信息。

3、需要根据传入的信息插入【用户钱包交易日志表】、【订单表】、【订单详情表】信息,修改【用户钱包表】、【商品表】。

因为没有product表需先创建

CREATE TABLE `product` (`product_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品ID',`product_name` varchar(100) NOT NULL COMMENT '商品名称',`price` decimal(10,2) NOT NULL COMMENT '价格',`stock` int(11) NOT NULL COMMENT '库存',PRIMARY KEY (`product_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;INSERT INTO `product` VALUES (1, '手机', 5999.00, 10);
INSERT INTO `product` VALUES (2, '耳机', 299.00, 20);

然后完成存储过程

DELIMITER //
CREATE PROCEDURE create_order_infos(IN in_user_id INT,IN in_product_id INT,IN in_quantity INT
)
BEGINDECLARE product_price DECIMAL(10,2);DECLARE product_stock INT;DECLARE user_balance DECIMAL(10,2);DECLARE order_number VARCHAR(50);DECLARE order_id INT;DECLARE detail_id INT;-- 获取商品价格和库存SELECT price, stock INTO product_price, product_stockFROM productWHERE product_id = in_product_id;-- 检查库存是否足够IF product_stock < in_quantity THENSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '库存不足';END IF;-- 获取用户余额(这里假设用户只有一个账户)SELECT balance INTO user_balanceFROM 8_账户表WHERE user_id = in_user_id;-- 检查余额是否足够IF user_balance < (product_price * in_quantity) THENSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '余额不足';END IF;-- 生成订单编号(这里简化为拼接当前时间)SET order_number = CONCAT('ORD', DATE_FORMAT(NOW(), '%Y%m%d%H%i%s'));-- 插入订单表INSERT INTO 4_订单id (user_id, company_id, order_number, order_date, status_id, count_id)VALUES (in_user_id, 1, order_number, CURDATE(), 1, in_quantity); -- 假设默认公司ID为1,状态为待发货SET order_id = LAST_INSERT_ID(); -- 获取最新插入的订单ID-- 插入订单详情表INSERT INTO 5_详情id (order_id, product_name, quantity, price, category)SELECT order_id, product_name, in_quantity, product_price, '电子产品' -- 假设所有商品都是电子产品FROM productWHERE product_id = in_product_id;-- 更新商品库存UPDATE productSET stock = stock - in_quantityWHERE product_id = in_product_id;-- 更新用户余额(这里简化处理,不记录交易日志)UPDATE 8_账户表SET balance = balance - (product_price * in_quantity)WHERE user_id = in_user_id;-- 返回订单ID(这里通过SELECT返回,而不是OUT参数)SELECT order_id;
END //
DELIMITER ;

测试语句

-- 有一个用户id为5,二号商品,购买数量为1的商品
set @user_id=5;
set @product_id=2;
set @in_quantity=1;
set @order_id=NULL;
CALL create_order_infos(@user_id,@product_id,@in_quantity);
select @order_id;

-- 有一个用户id为1,一号商品,购买数量为1的商品
set @user_id=1;
set @product_id=1;
set @in_quantity=1;
set @order_id=NULL;
CALL create_order_infos(@user_id,@product_id,@in_quantity);
select @order_id;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/361803.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目实战系列三: 家居购项目 第六部分

文章目录 &#x1f308;Ajax检验注册名&#x1f308;Ajax添加购物车&#x1f308;上传与更新家居图片&#x1f308;作业布置&#x1f34d;会员登陆后不能访问后台管理&#x1f34d;解决图片冗余问题&#x1f34d;分页导航完善 &#x1f308;Ajax检验注册名 需求分析 注册会员时…

【osgEarth】Ubuntu 22.04 源码编译osgEarth 3.5

下载源代码 git clone --depth1 https://dgithub.xyz/gwaldron/osgearth -b osgearth-3.5 下载子模块 git submodule update --init 如果下载不过来&#xff0c;就手动修改下.git/config文件&#xff0c;将子模块的地址替换成加速地址 (base) yeqiangyeqiang-Default-string…

苹果Mac安装adobe软件报错“installer file may be damaged”解决方案

最近Mac电脑系统的有小伙伴在安装PS、AI、AE、PR等软件&#xff0c;出现了一个错误&#xff0c;让人头疼不已&#xff0c;苦苦找寻&#xff0c;也找不到完美的解决方法。让我们来一起看看吧&#xff01; 很多小伙伴都喜欢苹果电脑&#xff0c;但是在安装外来软件时&#xff0c;…

浏览器扩展V3开发系列之 chrome.cookies 的用法和案例

【作者主页】&#xff1a;小鱼神1024 【擅长领域】&#xff1a;JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 chrome.cookies API能够让我们在扩展程序中去操作浏览器的cookies。 在使用 chrome.cookies 要先声明…

电脑突然提示dll文件丢失,怎么选择正确的恢复方法?

电脑突然提示dll文件丢失&#xff1f;其实当你的电脑使用久了&#xff0c;出现这种dll文件丢失是非常的正常的&#xff0c;毕竟你总会有不恰当的操作吧&#xff1f;这些操作都是会导致dll文件丢失的。丢失了&#xff0c;我们直接进行相关的修复就好了&#xff0c;还是比较简单的…

【C++】运算符重载(日期类的实现)

文章目录 前言一、运算符重载的概念和意义二、运算符重载的规则三、常用运算符重载1.关系运算符重载2.赋值运算符重载3.、-、、-重载4.前置和后置重载5.流插入<<和流提取>>重载 前言 之前在总结类的六个默认成员函数时&#xff0c;没有过多介绍运算符重载&#xf…

文生视频模型Sora刷屏的背后的数据支持

前言&#xff1a;近日&#xff0c;OpenAI的首个文生视频模型Sora横空出世&#xff0c;引发了一波Sora热潮。与其相关的概念股连续多日涨停&#xff0c;多家媒体持续跟踪报道&#xff0c;央视也针对Sora进行了报道&#xff0c;称这是第一个真正意义上的视频生成大模型。 01 …

第三十三篇——互联网广告:为什么Google搜索的广告效果好?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 对于信息的利用&#xff0c;再广告这个维度中去洞察&#xff0c;你又能发…

苹果CMS-V10 搭建教程踩坑,跳过部分验证

我突发奇想,想要安装一个CMS 苹果CMS搭建教程-CSDN博客 然后就有了下面的问题 结论是zip相关依赖未安装, 通过 apt install php-zip, 重新打开安装页面,同样如此 最后依据某个网站提示,修改 "\\192.168.1.200\root\var\www\html\maccms\application\install\control…

鸿蒙系统最简单安装谷歌服务及软件的方法

哈喽&#xff0c;各位小伙伴们好&#xff0c;我是给大家带来各类黑科技与前沿资讯的小武。 近日&#xff0c;华为开发者大会在东莞松山湖召开&#xff0c;发布了盘古大模型5.0和纯血版的鸿蒙 HarmonyOS NEXT 全场景智能操作系统&#xff0c;而根据研究机构 Counterpoint Resea…

AWS云计算平台:全方位服务与实践案例

摘要 在数字化浪潮的推动下&#xff0c;云计算已成为企业转型的强大引擎。AWS作为云计算的先锋&#xff0c;不仅提供了一系列强大的基础设施服务&#xff0c;更是在人工智能领域不断探索和创新。本文将带您领略AWS的全方位服务&#xff0c;并透过实际案例&#xff0c;感受其在…

Redis 7.x 系列【7】数据类型之列表(List)

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 常用命令2.1 RPUSH2.2 LPUSH2.3 LRANGE2.4 LINDEX2.6 LREM2.7 LLEN2.8 LPOP…

matlab量子纠缠态以及量子门操作下的量子态

前言 今天我们来聊聊题外话&#xff0c;量子纠缠&#xff0c;在目前物理分支中&#xff0c;要说最深&#xff0c;最能改变人类对宇宙影响的莫过于量子力学了&#xff0c;假如我们可以人为的对两个粒子施加纠缠态&#xff0c;那么我们将可以足不出户的完成对外界的操控 简介 …

三丰云免费虚拟主机及免费云服务器评测

三丰云是一家知名的云计算服务提供商&#xff0c;其免费虚拟主机和免费云服务器备受用户好评。为了更好地了解三丰云的服务质量&#xff0c;我们进行了详细的评测。首先&#xff0c;三丰云的免费虚拟主机提供稳定可靠的性能&#xff0c;让用户可以轻松搭建自己的网站。其免费云…

【博客719】时序数据库基石:LSM Tree的增删查改

时序数据库基石&#xff1a;LSM Tree的增删查改 LSM结构 LSM树将任何的对数据操作都转化为对内存中的Memtable的一次插入。Memtable可以使用任意内存数据结构&#xff0c;如HashTable&#xff0c;BTree&#xff0c;SkipList等。对于有事务控制需要的存储系统&#xff0c;需要在…

ChatGPT在程序开发中的应用:提升生产力的秘密武器

在当今飞速发展的科技时代&#xff0c;程序开发已经成为许多企业和个人必不可少的技能。然而&#xff0c;编写代码并非总是顺风顺水&#xff0c;面对复杂的算法、繁琐的调试、持续不断的需求变更&#xff0c;程序员们常常感到压力山大。在这种情况下&#xff0c;ChatGPT应运而生…

Python数据分析之-Oracle数据库连接

文章目录 cx_Oracle 介绍cx_Oracle运行原理cx_Oracle 安装linux环境安装windows环境安装 cx_Oracle 使用单独使用结合Pandas使用 参考资料 cx_Oracle 介绍 cx_Oracle 8是一个Python扩展模块&#xff0c;它提供了对Oracle数据库的访问能力。以下是cx_Oracle 8的一些关键特性和功…

Superagent:一个开源的AI助手框架与API

在人工智能日益普及的今天,如何将AI助手无缝集成到应用中成为了开发者们关注的焦点。今天,我们要介绍的Superagent正是一个为这一需求量身打造的开源框架与API。它结合了LLM、检索增强生成(RAG)和生成式AI技术,为开发者们提供了一个强大而灵活的解决方案。 一、Superagen…

获取个人免费版Ubuntu Pro

首先上官网地址&#xff1a;Ubuntu Pro | Ubuntu 点击页面中的"Get Ubuntu Pro now" 将用途选为“Myself”&#xff0c;在此页面中Ubuntu说明了该版本只面向个人开发者&#xff0c;且最终只允许5台设备免费使用&#xff1b;因而部署设备的抉择就不得不慎重考虑了&am…

【js + ckeditor】插入base64格式的图片

一、需求说明 直接把图片转成base64插入到富文本 二、需求分析 1、富文本图片格式处理位置 在ckeidtor的目录下有个plugins文件夹&#xff0c;在plugins下新建一个文件夹&#xff08;自己命名&#xff0c;如simpleupload&#xff09;&#xff0c;进入simpleupload文件夹&…