SQL 查詢 分頁 連線
問題:請設計一個關於使用者的訂單列表
1.查詢使用者名稱為張三的使用者(id="TianMao1003")的所有未支付的訂單資訊,並且按照新增時間排序。
2.針對問題1,進行分頁
3.針對問題1,進行分類,也就是該商品屬於那種屬性
(就是簡單的問題,欄位屬性資訊沒有認真的分析)
綜合三個問題(使用者資訊表除外)
首先得有一個分類表
id type_name type_id
1 衣服 0
2 配飾 0
3 上衣 1
4 褲子 1
5 襪子 1
6 內衣 1
7 項鍊 2
8 手鐲 2
9 鑽戒 2
10 耳環 2
商品資訊表
id goods_id goods_name type_id kucun shop_id
1 1001 艾瑪夾克 3 1000 201701021213
2 1002 艾瑪秋褲 4 1200 201701021213
3 1003 艾瑪襪子 5 1200 201701021213
4 1004 艾瑪內衣 6 1200 201701021213
5 1005 艾瑪項鍊 7 1200 201701021213
6 1006 艾瑪手鐲 8 1200 201701021213
7 1007 艾瑪毛褲 4 1200 201701021213
8 1008 艾瑪皮褲 4 1200 201701021213
使用者訂單表
id order_num goods_id user_id add_time pay_time pay_state
1 201802031213 1002 TianMao1003 201802031213 201802031259 1
1 201802031215 1004 TianMao1003 201802031215 201802031259 1
1 201802031216 1004 TianMao1003 201802031216 0
1 201802031217 1002 TianMao1003 201802031217 201802031259 1
1 201802031218 1007 TianMao1003 201802031218 0
CREATE TABLE typer(
id TINYINT PRIMARY KEY AUTO_INCREMENT,
typer_name VARCHAR(20) NOT NULL,
typer_id TINYINT NOT NULL,
UNIQUE(typer_name),
INDEX(typer_id)
);
INSERT INTO typer VALUES(1,'衣服',0);
INSERT INTO typer VALUES(2,'配飾',0);
INSERT INTO typer VALUES(3,'上衣',1);
INSERT INTO typer VALUES(4,'褲子',1);
INSERT INTO typer VALUES(5,'襪子',1);
INSERT INTO typer VALUES(6,'內衣',1);
INSERT INTO typer VALUES(7,'項鍊',2);
INSERT INTO typer VALUES(8,'手鐲',2);
INSERT INTO typer VALUES(9,'鑽戒',2);
CREATE TABLE goods(
id TINYINT PRIMARY KEY AUTO_INCREMENT,
goods_id INT NOT NULL,
goods_name VARCHAR(50) NOT NULL,
typer_id TINYINT NOT NULL,
kucun INT NOT NULL,
shop_id INT NOT NULL,
UNIQUE(goods_id),
INDEX(goods_name),
INDEX(typer_id),
INDEX(shop_id));
DROP TABLE goods;
INSERT INTO goods VALUES(1,1001,'艾瑪夾克',3,1000,20171231);
INSERT INTO goods VALUES(2,1002,'艾瑪秋褲',4,1000,20171232);
INSERT INTO goods VALUES(3,1003,'艾瑪襪子',5,1000,20171233);
INSERT INTO goods VALUES(4,1004,'艾瑪內衣',6,1000,20171234);
INSERT INTO goods VALUES(5,1005,'艾瑪項鍊',7,1000,20171235);
INSERT INTO goods VALUES(6,1006,'艾瑪手鐲',8,1000,20171236);
INSERT INTO goods VALUES(7,1007,'艾瑪毛褲',4,1000,20171237);
INSERT INTO goods VALUES(8,1008,'艾瑪皮褲',4,1000,20171238);
CREATE TABLE my_order(
id TINYINT PRIMARY KEY AUTO_INCREMENT,
order_num INT NOT NULL,
goods_id INT NOT NULL,
user_id VARCHAR(30),
add_time TIMESTAMP NOT NULL,
pay_time TIMESTAMP,
pay_state INT NOT NULL DEFAULT 0,
FOREIGN KEY(goods_id) REFERENCES goods(goods_id),
INDEX(goods_id),
INDEX(user_id)
);my_order
insert into `my_order` (`id`, `order_num`, `goods_id`, `user_id`, `add_time`, `pay_time`, `pay_state`) values('1','201802031213','1002','TianMao1003','2018-10-04 11:24:46','0000-00-00 00:00:00','0');
insert into `my_order` (`id`, `order_num`, `goods_id`, `user_id`, `add_time`, `pay_time`, `pay_state`) values('2','201802031215','1004','TianMao1003','2018-10-04 11:25:44','2018-02-03 14:13:56','1');
insert into `my_order` (`id`, `order_num`, `goods_id`, `user_id`, `add_time`, `pay_time`, `pay_state`) values('3','201802031216','1004','TianMao1003','2018-10-04 11:26:05','0000-00-00 00:00:00','0');
insert into `my_order` (`id`, `order_num`, `goods_id`, `user_id`, `add_time`, `pay_time`, `pay_state`) values('4','201802031019','1004','TianMao1003','2018-10-04 11:27:38','0000-00-00 00:00:00','0');
##查詢
SELECT * FROM my_order WHERE user_id = 'TianMao1003' AND pay_state=0 ORDER BY add_time DESC;
##分頁
SELECT * FROM my_order WHERE user_id = 'TianMao1003' AND pay_state=0 ORDER BY add_time DESC limit 0,1;
## 查詢指定使用者的未支付的商品所屬的分類(先是訂單跟商品表根據商品id左連線得到使用者名稱,商品名稱,分類的編號,把結果作為一張新表在跟分類表連線得到 最終的結果)
SELECT pttable.muid as '使用者名稱',pttable.gtname AS '商品分類' , typer.typer_name AS '所屬分類' FROM (SELECT my_order.user_id as muid,my_order.goods_id AS mgid ,goods.goods_name
AS gtname,goods.typer_id AS gtid FROM my_order LEFT JOIN goods ON my_order.goods_id = goods.goods_id
WHERE my_order.user_id='TianMao1003' AND pay_state=0) AS pttable LEFT JOIN typer ON pttable.gtid = typer.id;
結果: