begin process at 2010 02 09 23:12:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

MySQL

 > 

Requêtes

 > 

Resultat incompréhensible


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Resultat incompréhensible

jeudi 9 août 2007 à 11:36:26 | Resultat incompréhensible

JALEO WAHRANI

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.

Merci d'avance à vous tous.
jeudi 9 août 2007 à 12:10:13 | Re : Resultat incompréhensible

JALEO WAHRANI

Excusez-moi pour le post en double, mais j'ai fait une erreur dans ma question: en fait, la requête:

SELECT * FROM client AS t1 LEFT JOIN (SELECT * FROM perso WHERE prop=3) AS t2 ON t1.ref=t2.id WHERE t2.etat!='Y'

renvoie bien en reponse les lignes qui existent avec etat='N' mais ne renvoie par les lignes qui n'existent pas (etat=NULL)
jeudi 9 août 2007 à 19:17:17 | Re : Resultat incompréhensible

coq

Administrateur CodeS-SourceS
Réponse acceptée !
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


/*
coq
MVP Visual C#
CoqBlog
*/
samedi 11 août 2007 à 19:49:10 | Re : Resultat incompréhensible

JALEO WAHRANI

Merci beaucoup pour ta réponse, c'est une vraie réponse: tu prends non seulement le temps de donner la solution mais en plus tu expliques pourquoi.
mercredi 22 août 2007 à 22:42:28 | Re : Resultat incompréhensible

yann_lo_san

Avec SQL-Server on aurait fait :

WHERE isnull(t2.etat, 'N') != 'Y'

Y'a pas ça avec MySql ?



Cette discussion est classée dans : t1, select, t2, from, where


Répondre à ce message

Sujets en rapport avec ce message

Défit pour un pro [ par zazadec ] Question de se compliquer la vie, je dois reprendre un site avec une bdd déjà existante... bref vous avez compris j'ai pas le choix.2 tables T1 et T2 Optimisation requete [ par citt ] Bonjour,Je suis en train d'optimiser des requêtes et je me demande qu'elle manière et la plus rapide.Voici ma table Cette sous-requête peut retourner au plus un enregistrement [ par mariam1987 ] Salut à tous, Je débute en SQL et j'ai créé la requête : <p c Requete et jointure [ par jobijobar ] Re-,bon dans un précédent post j'avais partagé avec vous mon horrible requête, pour ceux qui n'ont pas eu le grand malheur de la voir, c'était :SELECT SELECT + float(5,2) [ par djagger ] Salut !je fais la requete suivante :SELECT * FROM my_tarif WHERE min=15.49ca ne marche pas !!!!!?????par contre :SELECT * FROM my_tarif WHERE min</STR Requêtes imbriquées. Erreur [ par patatedu65 ] Bonjour,j'aimerai qu'on m'aide à toruver une solution au problème que je vous expose tout de suite.J'ai développé un site en PHP/MySQL. J'ai fait mes optimisation de la clause WHERE sur des champs dates [ par ThierH ] Bonjour j'ai une table SQL Server (2005) contenant plus de 50000 lignes. Dans chaque ligne, j'ai des données de type datetime, integer, ... Mon applic Optimisation d'une sous-requête SQL [ par Lugdunum2 ] Bonjour, Dans le cadre de l'optimisation des requêtes SQL d'un site web, je me retrouve avec une grande question dont je n'ai pas trouvé de réponse d Recherche de texte [ par jobijobar ] Bonjour à tous, j'ai un problème lors de l'execution d'un requete.Table t1 : id, text1, text2, text3, text4, text5Table t2 : id, id2, field1, field2, SubQuery et ou condition de jointure [ par Nicolas___ ] Bonjour, je suis étudiant en info et je dois repasser mon cours de SQL , j'ai donc une petite question à vous demandez (J'y ai déjà répondu, j'aimer


Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales