即使一个为空也可以连接三个表
问题描述:
即使一个为空,我也想从三个表中获取值。 由于我可以使用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获得所有结果。
任何线索?
答
是的,你需要使用一个外部连接来完成这个。
原因是,当你只是说JOIN时,这实际上被解释为INNER JOIN,在这种情况下,所有表中都需要匹配。
答
现在,您正在使用这3个表中的INNER连接。这意味着你只能找回在其他表中有相应行的行。也就是说,如果给定的user.id没有对应的following.follow_id和userdetails.user_id,那么该行将被忽略。
如果你使用用户到其他表的左加入(左外连接),我认为你应该有你要找的结果。
更多有关INNER VS外部连接,这个问题可能会有所帮助: What is the difference between "INNER JOIN" and "OUTER JOIN"?
我想你想的'外join'。 – 2013-04-20 13:17:11