MySQL學習筆記(20)——自身連線(無限分類資料表設計)
阿新 • • 發佈:2019-02-04
自身連線
無限分類資料表設計:
CREATE TABLE tdb_goods_types
(
type_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
type_name VARCHAR(20) NOT NULL,
parent_id SMALLINT UNSIGNED NOT NULL DEFAULT 0
);
輸入資料:
INSERT tdb_goods_types(type_name,parent_id) VALUES('家用電器',DEFAULT);
INSERT tdb_goods_types(type_name,parent_id) VALUES ('電腦、辦公',DEFAULT);
INSERT tdb_goods_types(type_name,parent_id) VALUES('大家電',1);
INSERT tdb_goods_types(type_name,parent_id) VALUES('生活電器',1);
INSERT tdb_goods_types(type_name,parent_id) VALUES('平板電視',3);
INSERT tdb_goods_types(type_name,parent_id) VALUES('空調',3);
INSERT tdb_goods_types(type_name,parent_id) VALUES ('電風扇',4);
INSERT tdb_goods_types(type_name,parent_id) VALUES('飲水機',4);
INSERT tdb_goods_types(type_name,parent_id) VALUES('電腦整機',2);
INSERT tdb_goods_types(type_name,parent_id) VALUES('電腦配件',2);
INSERT tdb_goods_types(type_name,parent_id) VALUES('筆記本',9);
INSERT tdb_goods_types(type_name,parent_id) VALUES ('超級本',9);
INSERT tdb_goods_types(type_name,parent_id) VALUES('遊戲本',9);
INSERT tdb_goods_types(type_name,parent_id) VALUES('CPU',10);
INSERT tdb_goods_types(type_name,parent_id) VALUES('主機',10);
表結構以及資料分類結構:
自連線demo:
SELECT s.type_id AS 類別ID,s.type_name AS 名稱,p.type_name AS 類別 FROM tdb_goods_types AS s
LEFT JOIN tdb_goods_types AS p
ON s.parent_id = p.type_id;
自連線demo2:
SELECT p.type_id,p.type_name,count(s.type_name) AS child_count FROM tdb_goods_types AS p
LEFT JOIN tdb_goods_types AS s
ON s.parent_id = p.type_id
GROUP BY p.type_name
ORDER BY p.type_id;