繁体   English   中英

自联接获取比较同一表中数据的记录

[英]Self join get records comparing data from same table

我有 2 张桌子SchoolMembersSchoolDetails

学校成员

School  SchoolMember
KGB1    KGB1
KGB1    KGB2
KGB1    KGB3

和学校详情

id  schoolMember  type            YearJoining   PeriodJoining
136 KGB1          Principal       2016          17001
137 KGB2          SubPrinciple    2016          17001
138 KGB1          SubPrinciple    2016          17001
139 KGB3          Teacher         2016          17004
140 KGB4          Teacher         2018          17004

我必须为所有拥有 SchoolDetails 类型的老师的学校获得学校成员,这些老师有 Yearjoining 或在 Principle 之后加入的时期。

我不确定如何做到这一点,我尝试使用自我加入但没有运气。

预期结果为 139 的周期大于本金。

139 KGB3    Teacher 2016    17004

尝试以下查询。

SELECT *
FROM SchoolMembers SM1
    INNER JOIN SchoolDetails SD1
        ON SD1.schoolMember = SM1.schoolMember AND SD1.type = 'teacher'
    INNER JOIN SchoolMembers SM2
        ON SM1.School = SM2.School
    INNER JOIN SchoolDetails SD2
        ON SD2.schoolMember = SM2.schoolMember AND SD2.type = 'Principal'
WHERE SD1.YearJoining > SD2.YearJoining
    OR SD1.PeriodJoining > SD2.PeriodJoining

请使用以下查询,

select SD1.id,SM.schoolMember,SD1.type,SD1.YearJoining,SD1.PeriodJoining from 
SchoolMembers SM
inner join SchoolDetails SD1
on (SM1.schoolMember = SD.schoolMember)
inner join SchoolDetails SD2
on (SD1.id = SD2.id)
where (SD1.YearJoining > SD2.YearJoining) 
  or(SD1.PeriodJoining > SD2.PeriodJoining );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM