2012-02-02 1 views
0

私は2つのテーブル "members_info"と "members_lesson"を持っています。メンバがレッスンを行ったかどうかを確認するMySQLクエリ

私は1回のレッスンが、haventはを行っているメンバーを見ることができるクエリを作成したい

をMEMBER_ID、私は、lesson_idをmembers_lesson_idいるmembers_lessonで をLAST_NAME、FIRST_NAME、私はMEMBER_IDフィールドを持っているのは、members_infoで言ってみましょう別の行為をした。私はこのクエリを試した:

SELECT members_info.member_id 
    FROM members_info 
    JOIN member_lessons ON members_info.member_id = member_lessons.member_id 
    WHERE member_lessons.lesson_id =6 AND member_lessons.lesson_id !=7 

しかし、そのクエリは機能していません。それは、メンバーがレッスンを行ったかどうかだけチェックするときに機能しますが、メンバーが別のメンバーを行っていないかどうかを確認したい場合は、それは機能しません。何か案は?ありがとう!

EDIT -

私はこれを試してみました:それは作業を行い

SELECT members_info 
FROM members_info 
WHERE member_id IN (SELECT member_id FROM member_lessons WHERE lesson_id = 6) 
AND member_id NOT IN (SELECT member_id FROM member_lessons WHERE lesson_id = 7) 

が、パフォーマンスについてのイムはわかりません。それは大丈夫ですか?ありがとう!

答えて

0

SELECT members_info members_info WHERE MEMBER_ID INから(member_lessons中から選択MEMBER_ID WHERE lesson_id = 6) AND NOT IN(member_lessons FROM MEMBER_IDを選択WHERE lesson_id = 7)MEMBER_ID

1

これを試してみてください:

SELECT member_id, max(lesson_id) 
FROM member_lessons ml 
group by member_id 
WHERE lesson_id in (6, 7) 
having count(distinct lesson_id) = 1 
    and max(lesson_id) = 6 
+0

6 <7だから動作しますが、より一般的には "存在しない" – alfasin

関連する問題