select s.code, s.id
from subjects s
join courses c on (c.subject = s.id)
group by s.id
having count(*) > 25
except
select s.code, s.id
from subjects s
join courses c on (s.id = c.subject)
join course_staff cs on (cs.course = c.id);
이것은 select s.code, s.id
줄이 실제로 있어야한다는 것을 제외하고 원하는 결과를 반환합니다 select s.code, count(*)
. 나는 그것을 테스트로 사용하고 있습니다. 예제의 코드를 사용할 때 예상대로 4 개의 튜플을 얻었지만 s.id
for를 전환 count(*)
하면 주제 테이블에서 개수가 25보다 큰 모든 튜플을 얻습니다. 예제의 코드가 반환하는 개수 결과 만 표시하는 방법이 있습니까?
이런 식으로 시도
select s.code, count(*)
from subjects s
join courses c on (c.subject = s.id)
left join
(select s.code, s.id
from subjects s
join courses c on (s.id = c.subject)
join course_staff cs on (cs.course = c.id)) a
on a.code=s.code and a.id = s.id
where a.code is null
group by s.id
having count(*) > 25
두 테이블 (t1, t2)의 왼쪽 조인 (t2 열에 대한 널 검사)은 행이 테이블 t2와 일치하지 않는 테이블 t1의 모든 행을 선택합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다