il y a une sorte de probleme de logique dans ta requete... par exemple, si tu luis demande WHERE CARACTERISTIQ='CARAC-1', il va trouver ELEMENT-1 et si tu lui demandes WHERE CARACTERISTIQ='CARAC-2', il va aussi trouver ELEMENT-1 mais si tu demandes les 2 en meme temps, ça ne peut pas aller puisque si CARACTERISTIQ='CARAC-1' alors CARACTERISTIQne peut pas etre égal ) à 'CARAC-2'
(je suis pas sur d'etre tres clair...)
essaye de mettre un OR à la place du AND... peut etre que tu obtiendras les résultats que tu veux...
C'est logique. Avec ta requete tu demandes de renvoyer les tuples ou tu as car1 ET car2 alors que tu as besoin de tous les tuples ou tu as car1 OU car2.
« Dernière Édition: le 18-10-2003 a 15:02:45 par erwinol »
Avec le OU j'ai bien tout les tuples; mais j'ai ceux qui ont soit CAR-1 soit CAR-2; alors que je veux ceux qui ont les deux (voir les trois par extention...)
si entrée 1: ELEM-1(clé) CARAC-1(clé)
entrée 2: ELEM-1(clé) CARAC-2(clé)
entrée 3: ELEM-2(clé) CARAC-1(clé)
le OR me renvoi ELEM-1, ELEM-1, ELEM-2
alors que je veux ELEM-1 (ou ELEM-1,ELEM-1 je m'arrange après avec GROUP)
J'ai bien peur que ma base soit légèrement inutilisable pour cette requette mais j'en ai besoin pour d'autre qui fonctionnent très bien...
Il y til une issue...???
PS pour Jey: si si c très clair mais je ne vois pas comment contourner le problèmes...
Bon là on va dans Sub-Selects avec la clause EXISTS qui ne sont pas supportées dans mySQL pour le moment ... à moins qu'il y ai une autre solution.
Oubien il y a une solution plus performante qui est de dédoubler la table mais je suis pas sûr que ça fonctionne. Mais pour ça il faut avoir un champs identificateur autoincrémenté (apellé id dans mon exemple)
[CODE] SELECT noelem FROM matable T1, matable T2 WHERE T1.caracteristiq = carac-1 AND T2.caracteristiq = carac-2 AND T1.id = T2.id [/CODE]
FROM matable T1, matable T2 on dédouble la table pour pouvoir faire les 2 conditions sur un même tuple
T1.id = T2.id ça c'est pour éviter d'avoir le produit cartésien qui va multiplier les tuples renvoyés. c'est en fait cette condition qui permet de faire les conditions sur le même tuple, les identificateurs doivent être les mêmes (=> même tuple) et les conditions sont faites sur les 2 tables.
Je suis pas sûr que ça marcherait mais normalement oui.