これは私がかなり一般的なパターンだと思うものですが、私はちょうどそのための適切なクエリに苦労しています。リンクテーブルを使用した3ウェイジョイン
User Table
id
Member table
id
name
User Member link table
user_id
member_id
ユーザはユーザのテーブルに存在していても、ユーザメンバーリンクテーブルには行が存在しない可能性があります。
ユーザーテーブルのすべての行を選択したい場合、ユーザーがユーザーメンバーリンクテーブル内のメンバーへのリンクを持っていて、メンバーテーブルからリンクされている列を表示したい場合。ここで
は、私が持っているものだが、それだけでリンクされているユーザテーブルから行を取得します:
user.id user.username member.id member.name
1 bob null null
2 alice 10 Alice
3 jane 11 Jane
4 joe null null
任意の提案:
SELECT user.id, user.username, member.id, member.name
FROM users
LEFT JOIN user_member ON user.id = user_member.user_id
JOIN member ON user_member.member_id = member.id;
は、私はこのような何かを得る必要がありますか?
なぜあなたは参加1用の 'LEFT JOIN'を使用していますが、ない他のためですか? –
2回目の結合でLEFT JOINを使用すると、USERからすべての行が取得されますが、一致するメンバーがある場合は重複する行が得られます。 –
期待している出力のサンプルを提供できますか?また、ユーザーのメンバーが多い場合、ユーザーデータの重複を避けることはできません。 – Alex