課程
/數據庫
/MySQL
/與MySQL的零距離接觸
規律我倒是能總結出來,但是我反反復復看了一上午,就是搞不明白,為什么會出現12分13秒那種樣式的表格,為什么會和前面的輸出結果不一樣。
2017-01-30
源自:與MySQL的零距離接觸 5-13
正在回答
原因在于建立表的時候就將type_id 與parent_id 做了關聯
|?type_id?|?type_name???????|?parent_id?| +---------+-----------------+-----------+ |???????1?|?家用電器????????|?????????0?| |???????2?|?電腦、辦公??????|?????????0?| |???????3?|?大家電??????????|?????????1?| |???????4?|?生活電器????????|?????????1?| |???????5?|?平板電視????????|?????????3?| |???????6?|?空調????????????|?????????3?| |???????7?|?電風扇??????????|?????????4?| |???????8?|?飲水機??????????|?????????4?| |???????9?|?電腦整機????????|?????????2?| |??????10?|?電腦配件????????|?????????2?| |??????11?|?筆記本??????????|?????????9?| |??????12?|?超級本??????????|?????????9?| |??????13?|?游戲本??????????|?????????9?| |??????14?|?CPU?????????????|????????10?| |??????15?|?主機????????????|????????10?|
看上面的輸出,家用電器和電腦辦公的parent_id 為0,而type_id列 沒有為0的,所以他們沒有父類;大家電和生活電器的parent_id為1,那么type_id為1的就是家用電器,所以家用電器是他們的父類;依次類推,平板電視和空調的父類就是大家電。。。。
那么也就是說要用子表的parent_id去和父表的type_id做連接。也就是說x.parent_id,這個x是誰誰就是子表
SELECT s.type_id,s.type_name,p.type_name FROM tdb_goods_types AS s LEFT JOIN tdb_goods_types AS ?p ON s.parent_id = p.type_id;
這一段是用子表左交父表,由于0父表沒有,所以會產生NULL
SELECT p.type_id,p.type_name,s.type_name FROM tdb_goods_types AS p LEFT JOIN tdb_goods_types AS ?s ON s.parent_id = p.type_id;
這一段使用父表左交子表,子表中沒有5,6,7,8,11,12,13,14,15,這9項子表中沒有,所以產生9個NULL.
后面再通過GROUP BY,ORDER BY,就產生出你看到的那些
SELECT s.type_id,s.type_name,p.type_name FROM tdb_goods_types AS s LEFT JOIN tdb_goods_types AS ?p ON s.parent_id = p.type_id; ??
SELECT s.type_id,s.type_name,p.type_name FROM tdb_goods_types AS s LEFT JOIN tdb_goods_types AS ?p ON p.parent_id = s.type_id;
注意兩條語句 ON 條件不同,上面顯示的是所有類及其父類 ,下面顯示的是所有類及其子類,我好暈,誰能救救我
舉報
本課程涵蓋全部MySQL數據庫的基礎,學習MySQL數據庫的基礎知識
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-01-31
原因在于建立表的時候就將type_id 與parent_id 做了關聯
看上面的輸出,家用電器和電腦辦公的parent_id 為0,而type_id列 沒有為0的,所以他們沒有父類;大家電和生活電器的parent_id為1,那么type_id為1的就是家用電器,所以家用電器是他們的父類;依次類推,平板電視和空調的父類就是大家電。。。。
那么也就是說要用子表的parent_id去和父表的type_id做連接。也就是說x.parent_id,這個x是誰誰就是子表
SELECT s.type_id,s.type_name,p.type_name FROM tdb_goods_types AS s LEFT JOIN tdb_goods_types AS ?p ON s.parent_id = p.type_id;
這一段是用子表左交父表,由于0父表沒有,所以會產生NULL
SELECT p.type_id,p.type_name,s.type_name FROM tdb_goods_types AS p LEFT JOIN tdb_goods_types AS ?s ON s.parent_id = p.type_id;
這一段使用父表左交子表,子表中沒有5,6,7,8,11,12,13,14,15,這9項子表中沒有,所以產生9個NULL.
后面再通過GROUP BY,ORDER BY,就產生出你看到的那些
2017-02-26
SELECT s.type_id,s.type_name,p.type_name FROM tdb_goods_types AS s LEFT JOIN tdb_goods_types AS ?p ON s.parent_id = p.type_id; ??
SELECT s.type_id,s.type_name,p.type_name FROM tdb_goods_types AS s LEFT JOIN tdb_goods_types AS ?p ON p.parent_id = s.type_id;
注意兩條語句 ON 條件不同,上面顯示的是所有類及其父類 ,下面顯示的是所有類及其子類,我好暈,誰能救救我