0

meeting と呼ばれるテーブルと、meeting_permissions と呼ばれるテーブルがあります。後者は、特定の会議に参加したユーザーを保存します。メモ、ディスカッション、結論、およびトピックという他のテーブルもあり、その会議の議事録の特定の項目を格納します。私がやりたいことは、特定のユーザーが参加したすべての会議と、関連するすべてのメモ、ディスカッション、結論、およびトピックを取得することです。これが私が思いついたものです:

SELECT * FROM meeting WHERE id IN
(SELECT meeting_id FROM meeting_permissions WHERE user_id = $user) 
LEFT JOIN conclusion ON meeting.id = conclusion.meeting_id 
LEFT JOIN discussion ON meeting.id = discussion.meeting_id 
LEFT JOIN note ON meeting.id = note.meeting_id 
LEFT JOIN topic ON meeting.id = topic.meeting_id

それは私にはうまくいきません。2 番目の左結合で壊れます。これを修正するにはどうすればよいですか?

4

1 に答える 1

1

メインの会議テーブルではなく、サブセレクションに対して JOIN します。

SELECT 
  meeting.*,
  conclusion.*
  discussion.*,
  note.*,
  topic.*
FROM meeting 
  LEFT JOIN conclusion ON meeting.id = conclusion.meeting_id 
  LEFT JOIN discussion ON meeting.id = discussion.meeting_id 
  LEFT JOIN note ON meeting.id = note.meeting_id 
  LEFT JOIN topic ON meeting.id = topic.meeting_id
WHERE meeting.id IN
  (SELECT mp.meeting_id FROM meeting_permissions mp WHERE mp.user_id = $user)
于 2012-08-30T01:50:09.280 に答える