3

1 つが空の場合でも、3 つのテーブルから値を取得しようとしています。following.follow_id行が空かどうかに応じて if else ステートメントを使用できるためです。

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;

今のところ、 row に値がある場合にのみ値を提供しますfollowing.follow_id。しかし、空のテーブルがあっても、user_id からすべての結果を取得できます。

手がかりはありますか?

4

3 に答える 3

4

「INNER JOIN」を意味する「JOIN」を「LEFT JOIN」に置き換えるとうまくいくはずです。

于 2013-04-20T13:19:19.673 に答える
1

はい、これを行うには OUTER 結合を使用する必要があります。

その理由は、単に JOIN と言うと、これは実際には INNER JOIN として解釈されるためです。この場合、すべてのテーブルで一致する必要があります。

于 2013-04-20T13:22:39.977 に答える
1

現在、これら 3 つのテーブル間で INNER 結合を使用しています。これが意味することは、他のテーブルに対応する行がある行のみが返されるということです。つまり、特定の user.id に対応する following.follow_id と userdetails.user_id がない場合、その行は除外されます。

代わりに、ユーザーから他のテーブルへの LEFT JOIN (左外部結合) を使用すると、探している結果が得られるはずです。

INNER 結合と OUTER 結合の詳細については、次の質問が役立つ場合があります: "INNER JOIN" と "OUTER JOIN" の違いは何ですか?

于 2013-04-20T13:23:55.393 に答える