我正在尝试编写一个查询来查明哪些用户没有注册某些课程。在MySQL中查找缺失值
我有2个表;课程和用户。两者分别包含字段'id'和'coursename'和用户名'。
使用这两个表,现有系统将用户添加到第三个表(称为enrolled_users)。用户每占用一行。例如,如果用户ID“1”是在4个疗程enrolled_users看起来是这样的:
-----------------------
| user_id | course_id |
-----------------------
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
-----------------------
正如你可以看到这个表中的数据不是建立在一个关系,它使用的是两个表“课程在PHP中生成'和'用户'。
我不知道如何编写一个关于如何找出课程的查询用户'1'没有注册,如果有说10门课程,但我们可以看到用户'1'只在课程1- 4。
我想要使用像LIKE或不喜欢的东西吗?
SELECT u.id, c.id, ec.user_id, ec.course_id
FROM users u, courses c, enrolled_courses ec
WHERE u.id = ec.user_id
AND c.id = ec.course_id
AND u.id = '1'
我已经尝试使用=和<>但是,这并不表明我需要什么!;用户没有注册的课程列表。
对不起,如果我是模糊的,试图让我的头!
在现有系统上使用MySQL 5.0,我无法修改,只能从(目前)查询。
的想法是做左的连接,并添加其中course.id为空 – 2010-08-10 11:51:52