2012-02-02 39 views
0

我有两个表:“members_info”和“members_lesson”。Mysql查询,看看一个成员是否已经完成了课程

让我们在members_info我已经等领域member_id,FIRST_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) 

它的工作,但林不知道有关性能。那样好吗?谢谢!

回答

0

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)

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 2012-02-02 19:17:33

相关问题