问一个简单的问题,只是希望每个人都有乐趣去解决它。 我有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