Mysql запрос, чтобы увидеть, если участник сделал урок - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть две таблицы: "members_info" и "members_lesson".

Допустим, в members_info у меня есть поля member_id, first_name, last_name В members_lesson у меня есть members_lesson_id, lesson_id, member_id

Я хочу создать запрос, в котором я могу видеть участников, которые сделали один урок, но еще не сделали другой. Я пробовал этот запрос:

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

Но этот запрос не работает. Это работает, когда я только проверяю, выполнил ли участник урок, но если я хочу посмотреть, не выполнил ли участник другой, он не работает. Есть идеи? Спасибо!

РЕДАКТИРОВАТЬ -

Я пробовал это:

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)

Это работает, но я не уверен в производительности. Это нормально? Спасибо!

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Попробуйте это:

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 голосов
/ 15 августа 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...