Tabellen Beteiligter: Konto, Benutzer, Service, accesshistSQL Join Problem mit 3 Tischen und eine Unterabfrage
ich alle Datensätze in der Kontentabelle enthalten sein soll, und nur die Daten aus den anderen Tabellen, wenn es vorhanden ist.
Graf von Konto: 5064
Zeilen aus Abfrage unten zurückgegeben: 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
Ich habe es verengt, dass die Unterabfrage beitreten das Teil die Anzahl der Zeilen verursacht reduziert werden, aber Ich bin mir nicht sicher, wie ich es korrigieren kann. Jede Einsicht wird sehr geschätzt!
Ich könnte, aber es macht keinen Unterschied. Es gibt nur 4 Service-Codes und die Service-Code-Spalte hat eine Null-Einschränkung in der Account-Tabelle. – 90mph
Ich würde einfach anfangen, das Problem zu vereinfachen. Entfernen Sie die Unterauswahl und verbinden Sie sich einfach mit accesshist. Alle Joins zum linken äußeren Join ändern Entfernen Sie ll.mxlogin, die where-Klausel und order by. –