Ich habe zwei Tabellen, eine ist die Benutzertabelle und die andere ist die Token-Tabelle. Ich möchte diese beiden Tabellen zusammenführen, um zu sehen, welche Benutzer ihre Token überprüft haben und welche nicht. In der Token-Tabelle gibt es einen Fremdschlüssel, der die Benutzer-ID enthält.
Jetzt verwende ich einen Left-Join, um die Benutzer-IDs zu verknüpfen, und versuche zu überprüfen, ob keine Validierung erfolgt. Die Abfrageanweisung lautet wie folgt:
SELECT name, verifiziert VON Benutzern LEFT JOIN-Token ON user.ID = tokens.UID WHERE verifiziert = false
Angenommen, ich habe die folgenden zwei Tabellen:
ID-Name | 0 |. Joe 1 |. Sally 2 |. Dave 3 |. John
Dann sieht die Token-Tabelle wie folgt aus:
ID | 0 |. 1 |. 0 1 |. 2 |. 0 2 |. 3 |. 1
Wie Sie sehen können, hat Joe keine Datensätze in der zweiten Tabelle. Ich möchte diese beiden Tabellen verbinden und selbst wenn Joe keinen Datensatz in der zweiten Tabelle hat, möchte ich, dass dieser als falsch/null behandelt wird. Wenn ich die Abfrage ausführe, um nicht authentifizierte Benutzer zu finden, werden nur zwei Dateneinträge zurückgegeben.
Name | Sally |. 0 Dave |. 0
Wenn ich die where-Klausel entferne, sieht das Ergebnis wie folgt aus:
Name | Sally |. 0 Dave |. 0 Johannes |. 1 Joe |. NULL
Wie Sie sehen können, hat Joe unten einen Nullwert, aber ich möchte, dass er als nicht validiert behandelt wird. Wie soll ich eine Abfrage schreiben, um die folgenden Daten zu erhalten:
Name | Sally |. 0 Dave |. 0 Joe |. NULL
Oder einfach die folgende Abfrageanweisung, das Ergebnis ist 3. Das aktuelle Abfrageergebnis ist 2.
SELECT count(*) VON Benutzern LEFT JOIN-Token ON user.ID = tokens.UID WHERE verifiziert = false