2013-04-20 55 views
2

即使一個爲空,我也想從三個表中獲取值。 由於我可以使用if else語句,具體取決於following.follow_id行是否爲空。即使一個爲空也可以連接三個表

SELECT user.id, user.username,user.email, userdetails.profile_img, following.follow_id 
FROM user 
JOIN userdetails ON user.id = userdetails.user_id 
JOIN following ON user.id = following.follow_id 
GROUP BY user.id; 

現在只給我的價值存在於following.follow_id行的值。 但即使存在空表,我也能夠從user_id獲得所有結果。

任何線索?

+0

我想你想的'外join'。 – 2013-04-20 13:17:11

回答

3

用「LEFT JOIN」代替「JOIN」,這意味着「INNER JOIN」應該做到這一點。

+0

謝謝大家,左連接做到了!非常感謝。 – Dymond 2013-04-20 13:27:25

1

是的,你需要使用一個外部連接來完成這個。

原因是,當你只是說JOIN時,這實際上被解釋爲INNER JOIN,在這種情況下,所有表中都需要匹配。

1

現在,您正在使用這3個表中的INNER連接。這意味着你只能找回在其他表中有相應行的行。也就是說,如果給定的user.id沒有對應的following.follow_id和userdetails.user_id,那麼該行將被忽略。

如果你使用用戶到其他表的左加入(左外連接),我認爲你應該有你要找的結果。

更多有關INNER VS外部連接,這個問題可能會有所幫助: What is the difference between "INNER JOIN" and "OUTER JOIN"?