我正在创建学生记录搜索查询。学校有三个俱乐部(数学,英语和科学)。我想做的是选择他们加入此俱乐部的学生。 在学生 - 仅限数学 - 仅限数学和英语 - 仅限数学和科学 - 仅限英语 - 仅限英语和科学 - 仅限科学
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更改为AND时,它会给我null。 如果有人能帮助我,我会很高兴的。谢谢
答案 0 :(得分:0)
因此,您需要找到属于您可以执行的所有指定俱乐部的学生,如下所示。它会检查拥有所有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
答案 1 :(得分:0)
SELECT * FROM studentTB
WHERE EXISTS(SELECT * FROM studentCLUB
WHERE studentTB.id = studentCLUB.studentID)