2017-12-13 33 views
0

테이블로 문제를하세요. 계정SQL 3 개 테이블과 관련된 하위 쿼리

수 : 4915

select u.last_name, u.first_name, a.username, ll.mxlogin, si.servicename, a.islockedout 
from account a 
join service si on a.serviceid = si.serviceid 
left outer join user u on u.loginid = a.username 
left outer join(select max(loginattemptdate) as MxLogin, usernameattempted from accesshist where isloginsuccessful = 1 
group by usernameattempted) ll 
on a.username = ll.usernameattempted 
where a.isenabled = 1 
order by ll.mxlogin, u.last_name 

내가 서브 쿼리가 감소되는 행의 수를 일으키는 원인이되는 부분에 참여,하지만 그것을 좁혀했습니다 : 5064 개

행이 아래 쿼리에서 반환 나는 그것을 고칠 수있는 방법을 모릅니다. 어떤 통찰력이라도 대단히 감사합니다!

답변

0

첫 번째 조인을 왼쪽 외부 조인으로 변경해 보셨습니까?

select u.last_name, u.first_name, a.username, ll.mxlogin, si.servicename, a.islockedout 
    from account a 
    left outer join service si on a.serviceid = si.serviceid 
+0

그래도 차이는 없습니다. 서비스 코드는 4 개 뿐이며 서비스 코드 열은 계정 테이블에 null 제약 조건이 있습니다. – 90mph

+0

난 그냥 문제를 단순화 시작합니다. 하위 선택을 제거하고 액세스 기록원에 그냥 가입하십시오. 모든 조인을 왼쪽 외부 조인으로 변경합니다. ll.mxlogin, where 절 및 order by를 제거하십시오. –