私の貧弱なレベルでは複雑すぎるように見えるmysqlクエリが残っています。 この問題を解決するための助けがあれば、非常に感謝します。
_メンバー:COUNT()をINNER/LEFT JOINと組み合わせて使用できない
私は3つのテーブルを持っているすべてのメンバー
_友人のリストを各メンバーが持っているすべての友達のリストを、2つのフィールドを使用して:friends.id_memberは、会員IDが含まれているとfriends.id_friendはのIDが含まれています対応する友人。
_コメント:メンバーにより投稿されたすべてのコメントのリスト(テーブルメンバーにこのテーブルを結合するために、フィールドcomments.id_memberを使用して)
私が希望:
_(1):メンバーが持つかもしれないすべての友達を表示します(この例では会員数35;それはうまく動作します)
SELECT friends.*, members.*
FROM friends
INNER JOIN members ON friends.id_friend=members.id
WHERE friends.id_member='35'
_(2):同じmysqlのクエリを使用して、その友人のコメントそれぞれの数が投稿した可能性があります(すべての友人がコメントを掲載しているではない取得します;そしてここに私の問題です)。 Iこれを試してみました:
SELECT friends.*, members.*,
COUNT(comments.id_member) AS nb_comments
FROM friends
INNER JOIN members ON friends.id_friend=members.id
INNER JOIN comments ON comments.id_member=members.id
WHERE friends.id_member='35'
- >私はコメントのみ掲載していた友人を得る(ここでなければなりませんノーコメントと友達が投稿し、このクエリによって無視される)、およびコメント(nb_comments)の数私は間違っている。 別のバグ。メンバーは友達が全くいない場合に1行を返します。
nb: 'LEFT JOIN comments ON comments.id_member = members.id'は何も解決しません。
ありがとうゴードン。あなたの答えは私の問題の解決された部分です:各友達のコメント数は正しくなり、メンバーに友人がいないときはクエリの結果は空になります。しかし、このクエリにはコメントのないすべての友人がまだいません(私は理由は分かりません)。 – Romain
@Romain。 。 。メンバーに一致するすべての友人が含まれている必要があります。コメントがあるかどうかは、行が返されるかどうかに影響しません。 –
私の間違い:私は、各友達のzip_codeとcityを取得するために、別のINNER JOINを持っていました。これを別のサブクエリに入れた後、すべてが魅力的に機能します。どうもありがとう !! – Romain