SQL-Linksverknüpfung mit Where-Klausel zum Filtern leerer Felder
P粉511985082
2023-08-13 19:06:52
<p>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. </p>
<p>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: </p>
<pre class="brush:php;toolbar:false;">SELECT name, verifiziert
VON Benutzern LEFT JOIN-Token
ON user.ID = tokens.UID
WHERE verifiziert = false</pre>
<p>Angenommen, ich habe die folgenden zwei Tabellen:</p>
<pre class="brush:php;toolbar:false;">ID-Name |
0 |. Joe
1 |. Sally
2 |. Dave
3 |. John</pre>
<p>Dann sieht die Token-Tabelle wie folgt aus: </p>
<pre class="brush:php;toolbar:false;">ID |
0 |. 1 |. 0
1 |. 2 |. 0
2 |. 3 |. 1</pre>
<p>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. </p>
<pre class="brush:php;toolbar:false;">Name |
Sally |. 0
Dave |. 0</pre>
<p>Wenn ich die where-Klausel entferne, sieht das Ergebnis wie folgt aus: </p>
<pre class="brush:php;toolbar:false;">Name |
Sally |. 0
Dave |. 0
Johannes |. 1
Joe |. NULL</pre>
<p>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: </p>
<pre class="brush:php;toolbar:false;">Name |
Sally |. 0
Dave |. 0
Joe |. NULL</pre>
<p>Oder einfach die folgende Abfrageanweisung, das Ergebnis ist 3. Das aktuelle Abfrageergebnis ist 2. </p>
<pre class="brush:php;toolbar:false;">SELECT count(*)
VON Benutzern LEFT JOIN-Token
ON user.ID = tokens.UID
WHERE verifiziert = false</pre>
<p><br /></p>