次の2つのテーブル「USERS」と「GROUPS」があります。
USERS
-id
-name
-groupid
GROUP
-id
-name
すべてのユーザーをグループ名とグループIDとともに返したいのですが。グループIDフィールドの外部結合である必要がありますか?
単純な INNER JOIN で十分です。
SELECT `USERS`.*, `GROUP`.name AS group_name
FROM `USERS`, `GROUP`
WHERE `USERS`.groupid = `GROUP`.id
あなたはJOIN
声明を見たいと思うでしょう
私の電話からこれを行っているので、適度に間違った構文を許してください。
編集:他の人の構文の方が優れています。ここは早すぎる
グループに属していないユーザーが結果セットに表示されるように、とのLEFT JOIN
間を使用できますが、グループ名と ID は NULL です。users
groups
SELECT
a.*,
b.name AS group_name
FROM
users a
LEFT JOIN
`group` b ON a.group_id = b.id
補足: テーブル名group
は予約済みのキーワードであるため、必ずバッククォートで囲んでください。
結果セットは次のようになります。
id | name | group_id | group_name
-----------------------------------------------------------------------------
1 | John | 5 | ThisIsGroup5
3 | Tim | 3 | ThisIsGroup3
6 | NotInGroup | NULL | NULL
上記のクエリを に変更LEFT
するINNER
と、2 つのテーブルが内部結合され、ユーザー "NotInGroup" が結果セットから除外されます。