dedlfix: Denkfehler bei SQL-Abfrage?

Beitrag lesen

Tach!

Zeilenumbrüche wären sehr zuvorkommend gewesen, weil man dann die Query besser erfassen und sich das Querscrollen größtenteils sparen kann.

select * from vpnprotokoll 
where 
  logindate <> '' AND
  logindate < '2021-04-01' AND
  status = 'A' AND
  logindate IN (
    select MAX(logindate) from vpnprotokoll group by username)
order by username

Irgendwo scheint da ein Denkfehler zu sein, denn die Abfrage liefert (neuerdings) auch jemanden, der sich täglich anmeldet und auch aktuelle Einträge in der Tabelle stehen hat (z.B. von heute)

Die Subquery ermittelt die jeweils neuesten Login-Datümer aller User. Und diese mixt du dann mit denen der einzelnen User. Wenn du die Query nie verändert hast, war sie schon immer seltsam/falsch.

Vielleicht willst du eine Subquery, die sich auf den Nutzer der Hauptquery bezieht, also eine Correlated Subquery.

Ein

select MAX(logindate) from vpnprotokoll
where username = 'problemkind'
group by username

zeigt korrekt den letzten Eintrag (von heute) des Benutzers an.

Ein GroupBy ist in dem Fall aber sinnlos, weil die Datenmenge ja sowieso schon auf nur einen Nutzer begrenzt ist.

dedlfix.