我想获取仅在学校有特定年级孩子的所有父母。 以下是表格的精简版。
TABLE students
id,
last_name,
grade_id,
school_id
TABLE parents_students
parent_id,
student_id
TABLE parents
id,
last_name,
school_id
我尝试了以下查询,但实际上并没有按预期工作。它宁愿取而代之的是一所学校中所有的父母,而不论年级。任何帮助表示赞赏。谢谢。
SELECT DISTINCT
p.id,
p.last_name,
p.school_id,
st.school_id,
st.grade_id,
FROM parents p
INNER JOIN students st ON st.school_id = p.school_id
WHERE st.grade_id = 118
AND st.school_id = 6
GROUP BY p.id,st.grade_id,st.school_id;
答案 0 :(得分:1)
我想:
select p.*
from parents p
where exists (select 1
from parents_students ps join
students s
on ps.student_id = s.id
where ps.parent_id = p.id and
s.grade_id = 118 and
s.school_id = 6
);
您的问题是您需要有关父母的信息。如果是这样,我看不到您为什么要包括有关学校和年级的多余信息(这是多余的,因为where
子句准确指定了这些值是什么。)