Ich versuche, eine Liste von Mitgliedsdatensätzen anzuzeigen, und ich habe ein paar Tabellen, die ich benutze, um anzuzeigen, was ich brauche.
Das ist der einfache Teil. Der Teil, mit dem ich Hilfe benötige, ist mit einer Tabelle, die viele Datensätze zu jedem Mitgliedsdatensatz enthält: Anmeldeverlauf
Ich möchte nur die erste Zeile für jeden Mitgliedsdatensatz anzeigen, die in der Login-Verlaufstabelle vorhanden ist. Alternativ möchte ich vielleicht Flipflop und den letzten Datensatz in der Login-Verlaufstabelle anzeigen.
hier ist, was ich bis jetzt habe:
%Vor%Also, was zurückgibt, was erwartet wird.
Die 2 Spalten von tbl_members_login_history
, die ich zum zurückgegebenen Ergebnis hinzufügen möchte, sind: mh. loggedtime
, mh. ipaddy
Ich weiß, das tbl_members_login_history
hinzufügen, da ein LINKER JOIN Duplikate zurückgibt, also denke ich, dass hier eine Unterabfrage notwendig sein muss, um nur den ersten Datensatz für den memberid
zurückzugeben, der in tbl_members_login_history
existiert. .
Was mich beunruhigt, ist, wenn kein Datensatz in der History-Tabelle existiert, möchte ich immer noch diese Member-Informationen anzeigen, aber die History-Spalten als NULL belassen.
Wäre das ein Unteranfrage-Vorfall? und wenn ja, wie fügt man diesen Typ von LIMIT hinzu?
Dies ist das greatest-n-per-group
Problem, das häufig bei Stack Overflow gestellt wird.
So würde ich es in Ihrem Szenario lösen:
%Vor% Das heißt, dass mh
die letzte Zeile in tbl_member_login_history für die angegebene Mitglied-ID sein soll. Wir suchen also nach einer anderen Zeile mh2
, die noch jünger ist. Wenn nicht aktueller als die Zeile mh
gefunden wird, ist mh2.*
NULL, also muss mh
die letzte sein.
Ich gehe davon aus, dass diese Tabelle eine Primärschlüsselspalte enthält, die steigende Werte enthält. Für dieses Beispiel nehme ich an, dass der Spaltenname pk
ist.
Wenn Sie LEFT OUTER JOIN für beide Verweise auf die Anmeldeverlaufstabelle verwenden, wird die Zeile m
gemeldet, auch wenn keine übereinstimmende Zeile vorhanden ist.
Tags und Links mysql subquery greatest-n-per-group