SQL の質問にタイトルを付けるのは難しいです。これをより適切に説明する方法を考えられる場合は、自由に変更してください。
私は非常に典型的なセットアップを持っています: 3 つのテーブルusers
、、、groups
group_members
ここにSQLフィドルがあります:http://sqlfiddle.com/#!2/23712/1
私が知りたいのは、どのグループがどのユーザーであるかです。
だから、私は走っています:
SELECT u.id, u.firstname, u.lastname,
GROUP_CONCAT(m.group_id) as groups
FROM group_members m, users u
WHERE m.user_id = u.id
GROUP BY id
ORDER BY u.lastname ASC
これはクールで、ユーザー名とそのユーザーが所属しているグループが表示されます。
私の問題は、もちろん WHERE ビットが一致しないため、どのグループにも属していないユーザーが表示されないことです。
どのグループにも属していないユーザーを返すにはどうすればよいですか? (上記の SQL Fiddle では、Zack Jones の別の行が必要で、彼がグループ 0、または NULL か何かに属していることを示しています!)