こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MySQLで差集合を2重で使うには?

以下の3つのテーブルがあります。
レコードも一緒に示しておきます。

grp:グループ名(と管理者)
 name(グループ名)、admin(管理者ID)

belong:各グループの所属名簿
 grp(グループ名)、user(所属ユーザのID)

reserve:グループ参加予約中ユーザのリスト
 grp(グループ名)、user(申込みをしたユーザのID)


ここで、あるユーザIDに対し、
「参加も参加予約もしていないグループ」の表を取り出したいのです。

id001が参加していないグループの表は以下のSQL文でできました。
SELECT grp.name FROM grp
LEFT JOIN belong ON grp.name = belong.grp
WHERE belong.user != "id001";

この表からさらに参加予約しているグループを排除するにはどうすればいいでしょうか?
お願いします。

投稿日時 - 2008-11-27 16:08:45

QNo.4511465

困ってます

質問者が選んだベストアンサー

具体的な例がないので希望がわかりませんが、普通に

SELECT grp.name
FROM grp
LEFT JOIN belong ON grp.name = belong.grp
LEFT JOIN reserve ON grp.name = reserve.grp
WHERE 1
AND belong.user != "id001"
AND reserve.user != "id001"

みたいな感じでどうでしょう?

投稿日時 - 2008-11-27 17:41:15

お礼

回答ありがとうございます。
LEFT JOIN はそのようにして2つ付けられるのですね。
おかげさまで解決できました。
ありがとうございました。

投稿日時 - 2008-11-27 18:01:44

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問