[英]Select rows that have two different values in same column
I would like to select all students that have been passed semester
1 and 4 , with my query it shows only one row by student, I was expecting two. 我想选择已通过了所有的学生
semester
1和4,用我的查询,仅显示一个由学生行,我所期待的两项。
SELECT Student.mat_stud, fname, lname, dbirth, materials_notes, semester
FROM Student, Notes
WHERE Notes.mat_stud = Student.mat_stud
AND fails_status = 1
AND Notes.mat_div = 1
AND semester IN(1 , 4)
AND Notes.level = 1
AND school_year = 2015
Group By Notes.mat_stud
Having count(fname) = 2
Order By Notes.mat_stud
My database tables looks like this: 我的数据库表如下所示:
Student
-------------------------
mat_stud fname lname
-------------------------
142-3698 fname name
142-3699 fname name
142-3701 fname name
142-3700 fname name
Notes
---------------------------------------------------------------
mat_stud materials_notes semester level school_year
---------------------------------------------------------------
142-3698 1 1 2015
142-3699 1 1 2015
142-3701 1 1 2015
142-3698 4 1 2015
142-3700 1 1 2015
142-3700 4 1 2015
Expected result: 预期结果:
mat_stud fname lname materials_notes semester
142-3698 fname name 1
142-3698 fname name 4
142-3700 fname name 1
142-3700 fname name 4
I come with this solution by joining the result of all students that have been pass semester 1 and 4: 我通过加入已经过第一学期和第四学期的所有学生的成绩来得到这个解决方案:
SELECT Notes.mat_stud FROM Notes
WHERE semester IN (1, 4) Group By mat_stud Having COUNT(*) = 2
With all students. 与所有学生。
SELECT t1.mat_stud, fname, lname, materials_notes FROM Student as t1, Notes
INNER JOIN ( SELECT Notes.mat_stud FROM Notes
WHERE semester IN (1, 4) Group By mat_stud Having COUNT(*) = 2) as t2
ON t2.mat_stud = t1.mat_stud
WHERE fails_status = 1
AND Notes.mat_div = 1
AND Notes.level = 1
AND school_year = 2015
AND t1.mat_stud = Notes.mat_stud
Order By Notes.mat_stud
select S.mat_stud, S.fname, S.lname, N.materials_notes, N.semester
from Notes N, student S
where N.mat_stud = S.mat_stud and N.mat_stud in (
select mat_stud from Notes where semester in(1,4)
group by mat_stud
having count(mat_stud) > 1
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.