問一個簡單的問題,只是希望每個人都有樂趣去解決它。 我有2張桌子。 1.學生 2.課程sql select with exact results
學生
+----+--------+
| id | name |
+----+--------+
| 1 | User1 |
| 2 | User2 |
+----+--------+
場
+----+------------+------------+
| id | student_id | course_name|
+----+------------+------------+
| 1 | 1 | English |
| 2 | 1 | Chinese |
| 3 | 2 | English |
| 4 | 2 | Japanese |
+----+------------+------------+
我希望得到的結果所有的學生,誰採取英語和中國,不是英語或中國。
預期的結果:
+----+------------+------------+
| id | student_id | course_name|
+----+------------+------------+
| 1 | 1 | English |
| 2 | 1 | Chinese |
+----+------------+------------+
我們通常做的是
select * from student join course on (student.id = course.student_id) WHERE course_name = 'English' OR course_name = 'Chinese'
,但這樣的結果,我可以得到這不是我期望的結果用戶2記錄。我只想記錄只顯示用戶參加英語+中文課程。
如果這是作業,請認真標記它。爲了清楚起見,添加一個不符合標準的學生。 – 2010-05-29 12:47:04
已經有一個學生不符合標準 - 一個與student_id = 2 ... – ivans 2010-05-29 12:49:35
這不是一個家庭作業,我不是學生了,我實際上解決更復雜的搜索標準,這只是簡化版本的一個例子。大多數網站都有多個搜索條件,我確定他們使用OR來獲得結果。我在想什麼,如果人們想要完全的2門課程,不用或者。我知道通過使用或也會得到預期的結果之一,但也得到不必要的。這就是爲什麼我出現這個想法。 – Shiro 2010-05-29 13:05:40