我正在嘗試編寫一個查詢來查明哪些用戶沒有註冊某些課程。在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