这里我们模拟一个商城的基本的表结。此结构由(用户、门店、导购、门店商品、订单、订单对应的商品)。其中,导购也是一个用户,门店是只属于一个店主的,同时店主本身也是一个导购也是一个普通用户。
结构图:
MySQL分库分表(1)-脚本
1、从session中获得客户ID。
2、可以通过时间戳等拼凑一个订单ID(在创建表的时候为了方便我用自增的,在以下我们一直就吧订单ID看成不是自增的,是用程序生成的)。
3、从商品的店铺能获得到导购ID(获取规则我们这边认为是随机)。
4、可以从商品中计算出订单价格。
最终就能拼凑出下单的INSERT SQL语句(这边我就不真正写插入语句了)
1 2 3 4 5 6 7 8 9 10 | SET autocommit = 0 ; START TRANSACTION ; — 创建订单语句 INSERT INTO orders VALUES (订单 ID , 导购 ID , 购买用户 ID , 订单价格 , 订单状态 ) ; — 创建商品订单语句 INSERT INTO order _goods VALUES ( NULL , 订单 ID , 商品 ID , 商品价格 , 商品数量 ) ; — 可以给添加多个商品到订单中 . . . . . . COMMIT ; set autocommit = 1 ; |
以上就是一个客户下单时要操作的,订单ID(订单号)是程序生成的,订单ID(订单号)是程序生成的,重要的事要说三遍。
当用户查看订单列表的时候可以通过分页一次性获得自己的订单列表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | — 每一页 10行 (这边顺便展示一下单数据量大时优化后的 sql语句 ) — 查找用户 ID为 100的订单 SELECT l_o . orders_id , o . user_guide_id , o . user_id , o . price , og . price FROM ( SELECT orders _id FROM orders WHERE user _id = 100 LIMIT 0 , 10 ) AS l _o LEFT JOIN orders AS o ON l_o . orders _id = o . orders _id LEFT JOIN order _goods AS og ON l_o . orders _id = og . orders_id ; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | — 每个导购也可以查看他销售了多少的订单 — 查找导购 ID为 1的销售情况 SELECT o . orders_id , o . user_guide_id , o . user_id , o . price , og . price FROM orders AS o LEFT JOIN order _goods AS og ON o . orders _id = og . orders_id WHERE o . orders _id IN ( SELECT orders _id FROM ( SELECT orders _id FROM orders WHERE user_guide_id = 1 LIMIT 0 , 10 ) AS tmp ) ; |
1 2 | — 这边我们修改订单金额就好,修改 ID为 1000的订单 UPDATE orders SET price = ‘10000’ WHERE orders_id = 1000 ; |
1、我们可以根据操作的用户获得店铺名
1 2 | — 添加商品伪 SQL INSERT INTO goods VALUES ( NULL , 商品名 , 商品价格 , 店铺名 ) ; |
文章转载来自:trustauth.cn