Jointure gauche SQL utilisant la clause Where pour filtrer les champs vides
P粉511985082
2023-08-13 19:06:52
<p>J'ai deux tables, l'une est la table des utilisateurs et l'autre est la table des jetons. Je souhaite rejoindre ces deux tables pour voir quels utilisateurs ont vérifié leurs jetons et lesquels ne l'ont pas fait. Il existe une clé étrangère dans la table des jetons qui contient l'ID utilisateur. </p>
<p>Maintenant, j'utilise une jointure gauche pour joindre les ID utilisateur et j'essaie de vérifier s'il n'y a pas de validation. L'instruction de requête est la suivante : </p>
<pre class="brush:php;toolbar:false;">SELECT nom, vérifié
FROM utilisateurs LEFT JOIN jetons
SUR utilisateurs.ID = jetons.UID
OÙ vérifié = faux</pre>
<p>Supposons que j'ai les deux tableaux suivants :</p>
<pre class="brush:php;toolbar:false;">ID Nom |
0 |
1 |
2 |
3 | John&Lt ;/pré> ;
<p>Ensuite, le tableau des jetons est le suivant : </p>
<pre class="brush:php;toolbar:false;">ID |
0 | 1 | 0
1 | 2 | 0
2 | 3 | 1≪/pré>
<p>Comme vous pouvez le constater, Joe n’a aucun enregistrement dans la deuxième table. Je veux joindre ces deux tables et même si Joe n'a aucun enregistrement dans la deuxième table, je veux qu'il soit traité comme faux/nul. Lorsque j'exécute la requête pour rechercher des utilisateurs non authentifiés, seules 2 entrées de données sont renvoyées. </p>
<pre class="brush:php;toolbar:false;">Nom Vérifié |
Sally | 0
Dave | 0≪/pré>
<p>Si je supprime la clause Where, le résultat sera le suivant : </p>
<pre class="brush:php;toolbar:false;">Nom Vérifié |
Sally | 0
Dave | 0
Jean | 1
Joe | NULL</pré>
<p>Comme vous pouvez le voir, Joe a une valeur nulle en bas, mais je souhaite qu'elle soit traitée comme non validée. Comment dois-je écrire une requête pour obtenir les données suivantes : </p>
<pre class="brush:php;toolbar:false;">Nom Vérifié |
Sally | 0
Dave | 0
Joe | NULL</pré>
<p>Ou simplement l'instruction de requête suivante, le résultat est 3. Le résultat actuel de la requête est 2. </p>
<pre class="brush:php;toolbar:false;">SELECT nombre(*)
FROM utilisateurs LEFT JOIN jetons
SUR utilisateurs.ID = jetons.UID
OÙ vérifié = faux</pre>
<p><br /></p>