관련 테이블 "그룹에 의해 상위 1"에 도움이 PhoneID INT, PHONETYPE INT
은 = 4 PHONETYPE 6 개 전화가 있다는 것을 DepartmentID = 2에 속합니다. DepartmentID = 2가 설명을 위해 내 쿼리 모든 부서를 가져올 것입니다
SQL
select *
from DepartmentPhone
join Phone on Phone.PhoneID = DepartmentPhone.PhoneID and Phone.PhoneType = 4
where DepartmentPhone.DepartmentID = 2
참고 : 그래서이 6 개 기록을 생산하고 있습니다.
내가 원하는 것은 각 부서에 대해 첫 번째 전화 (유형 = 4)를 선택하는 것입니다. 부서 당 단 하나의 행만 선택하십시오. 나는 다음 쿼리가 트릭을 할 것이라고 생각했지만 6 개의 레코드를 모두 검색했다. 나는 무엇을 놓치고 있습니까?
select x.*
from DepartmentPhone x
where
x.DepartmentID = 2
and x.PhoneID = (select max(y.PhoneID)
from departmentphone y
join Phone on y.PhoneID = Phone.PhoneID and Phone.PhoneType = 4
where x.DepartmentPhoneID = y.DepartmentPhoneID)
당신의 도움을 주셔서 감사합니다!
답장을 보내 주셔서 감사합니다. 그것이 올바른 것이지만 Bill은 내 실수가 어디에 있는지를 보여주었습니다 (DepartmentID가 아니라 DepartmentPhoneID와 상관 관계가 있음). 도와 주셔서 감사합니다. –