JALEO WAHRANI
Messages postés17Date d'inscriptionmercredi 20 juin 2007StatutMembreDernière intervention14 février 2008
-
9 août 2007 à 11:36
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 2016
-
22 août 2007 à 22:42
Bonjour, j'ai une base avec 2 tables: 'perso et client',
perso a pour colonnes:
id, prop, etat
état vaut 'Y' si on effectue un suivi, sinon (par défaut) 'N'.
client a pour colonnes:
ref, nom
Sachant que pour une ligne dans client il n'y a pas obligatoirement de ligne dans perso.
Diverses requêtes fonctionnent très bien, mais avec une j'ai un problème;
SELECT * FROM client AS t1 LEFT JOIN (SELECT * FROM perso WHERE prop=3) AS t2 ON t1.ref=t2.id WHERE t2.etat='Y'
me retourne bien toutes les lignes pour lesquelles état='Y'
par contre, moi ce qui m'interesse c'est de récupérer les lignes pour lesquelles état est différent de 'Y' soit 'N' soit NULL.
J'ai essayé une solution propre:
SELECT * FROM client AS t1 LEFT JOIN (SELECT * FROM perso WHERE prop=3) AS t2 ON t1.ref=t2.id WHERE t2.etat!='Y'
et une solution sale:
SELECT * FROM client AS t1 LEFT JOIN (SELECT * FROM perso WHERE prop=3) AS t2 ON t1.ref=t2.id WHERE t2.etat='N' OR t2.etat=NULL
et rien à faire dans tous les cas, il n'y a pas de réponses retournées alors que si je fais un simple:
SELECT * FROM client AS t1 LEFT JOIN (SELECT * FROM perso WHERE prop=3) AS t2 ON t1.ref=t2.id WHERE 1
Toutes les lignes apparaissent (celles pour qui état vaut 'Y' et celles pour qui etat vaut NULL)
Si vous avez des solutions ça pourrait bien m'aider car je me casse le sdents sur ce probème depuis un petit moment et je commence à prendre du retard.
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 9 août 2007 à 19:17
Salut,
NULL n'est pas une valeur, c'est NULL, une absence de valeur.
Donc NULL n'est pas différent de 'Y'.
Tout comme NULL est différent de NULL.
Ta requête doit plutot être
SELECT * FROM client AS t1 LEFT JOIN (SELECT * FROM perso WHERE prop=3) AS t2 ON t1.ref=t2.id WHERE t2.etat!='Y' OR t2.etat IS NULL