【发布时间】:2017-03-25 17:02:08
【问题描述】:
我有这样的简单数据库方案:Child one----many SchoolPreferences
子表包括:
ChildId, Name, Surname, Age
SchoolPreferences 包括:
PreferenceId, ChildId, PreferenceNumber, SchoolName
这是为了重新上学。每个孩子最多可以选择3所他们想去的学校。如果他们在 PreferenceNumber 1 中被接受,那么他们会去 那所学校,如果他们不符合条件,他们可以进入 PreferenceNumber 2,如果他们在那里失败,那么他们最后的机会是进入第三优先学校。
我需要选择仅被选为 PreferenceNumber 1 的学校。因此,如果任何孩子选择学校作为 PreferenceNumber 2 或 3,则该学校根本不应该出现在结果中。
到目前为止,我只知道如何选择单个行,但我需要的是过滤组,所以每个学校都是一个组,如果任何偏好 > 1,那么整个组不应该出现在结果中。
到目前为止,我有这个,但正如我所说,它只适用于个别行,而不是学校:
select SchoolPreferences.PreferenceId,
Children.name,
Children.Surname
from Children
inner join SchoolPreferences on Children.ChildId = SchoolPreferences.ChildId
group by SchoolPreferences.PreferenceId,
Children.name,
Children.Surname
having (((SchoolPreferences.PreferenceNumber) = 1));
【问题讨论】: