I have 2 tables SchoolMembers
and SchoolDetails
SchoolMembers
School SchoolMember
KGB1 KGB1
KGB1 KGB2
KGB1 KGB3
and SchoolDetails
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
I have to get school member for all Schools which is having SchoolDetails type teacher having Yearjoining or period joining after Principle.
I am unsure about how to do this, I tried this using self join but no luck.
Expected result as 139 has period greater than Principal.
139 KGB3 Teacher 2016 17004
Try with below query.
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
Please use below query,
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 );
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.