介紹完最常用的INNER JOIN,
現在要介紹LEFT/RIGHT JOIN,
概念上是:
我們選了一張表,
以這張表為主,
加入第二張表,
第二張表會用資料一行行判斷,能不能跟第一張表連接,
能就連起來,不能的話那行資料就不放進去。
用LEFT JOIN看,會長這樣:
B對到B後,會把其他資料也併過去。
下面用我們的資料表來看吧!
LEFT JOIN就是左邊的表(第一張表)不管怎樣都一定會出現,
右邊的表則是有符合才會出現。
以我們的資料表而言,
student LEFT JOIN class,
student裡面的16筆資料一定會出現,
即使student表中的Amy選的課程是6,
對不上任何class表的課程(我們的課程表只提供1到5的課程!),
結果一樣會出現Amy的資料,但在課程資料部分會是空白的。
class表則要看student有沒有用到它,
假設有一門課都沒有任何學生上,LEFT JOIN就不會出現那堂課的資訊。
SELECT * FROM student s LEFT JOIN class c ON c.class=s.id;
RIGHT JOIN和LEFT JOIN相反,
它是以右邊的表(第二張表)為主,
也就是第二張表的資料會無條件全部選出。
以我們的資料來看,
class表的資料都會出現,
但是第一張表student表中的Amy因為選的課程是6,
並沒有在第二張表中,因此並不會被選出。
SELECT * FROM student s RIGHT JOIN class c ON c.class=s.id;
LEFT JOIN就是靠左對齊,
RIGHT JOIN是靠右對齊,
而昨天學的INNER JOIN是兩邊都要有!