我正在创建一个学生记录搜索查询。这所学校有三个俱乐部(数学、英语和科学)。我想做的是根据他们所加入的俱乐部的顺序来选择学生。--仅限数学的学生--仅限数学和英语的学生--仅限数学和科学的学生--仅限英语的学生--仅限英语的学生--仅限科学的学生
Student table (studentTB)
id | student_name | date_join
-----------------------------
1 | Daniel Addo | 2012-01-05
2 |David Polles | 2013-05-11
3 | Grace Amorno | ---------
4 | Zein Akill | ---------
Club table (studentCLUB)
id | studentID | club
----------------------
1 | 1 | maths
2 | 1 | science
3 | 2 | science
4 | 2 | english
5 | 3 | science
6 | 4 | maths
7 | 4 | science
8 | 4 | english
SELECT *
FROM studentTB
INNER JOIN studentCLUB
ON studentTB.id = studentCLUB.studentID
WHERE (club = 'maths') OR (club = 'science') OR (day = 'english')
GROUP BY studentTB.id这就是我到目前为止所做的,当学生落入其中一个俱乐部时,它就会选择学生。但是当我把OR改为时,它给我的结果是null。如果有人能帮我,我会很高兴的。谢谢
发布于 2015-03-31 16:26:56
因此,你需要找到属于所有给定俱乐部的学生,你可以这样做。它将检查学生是否拥有所有给定的3个俱乐部。
SELECT *
FROM studentTB
INNER JOIN studentCLUB
ON studentTB.id = studentCLUB.studentID
WHERE
club in ('maths','science','english')
GROUP BY studentTB.id
having count(*) = 3 发布于 2015-03-31 16:29:39
SELECT * FROM studentTB
WHERE EXISTS(SELECT * FROM studentCLUB
WHERE studentTB.id = studentCLUB.studentID)https://stackoverflow.com/questions/29363909
复制相似问题