[Problème] Mysql & Select ... not in ... [Résolu]

Signaler
Messages postés
5
Date d'inscription
mardi 22 juillet 2003
Statut
Membre
Dernière intervention
16 septembre 2005
-
Messages postés
5
Date d'inscription
mardi 22 juillet 2003
Statut
Membre
Dernière intervention
16 septembre 2005
-
Salut,



J'essaie de faire fonctionner cette requête sql sur un serveur qui ne prends pas en compte la subrequête après le NOT IN :



select *

from



DEPartement, RAYon

where



DEPartement.DEP_id = RAYon.DEP_id

and



RAYon.RAY_id not in



(select RAY_id from Product_RAyon
where PRO_id = "2")

order by



DEPartement.DEP_nom_fr, RAYon.RAY_nom_fr


Je ne sais pas comment réécrire cette requête afin qu'elle puisse fonctionner. Certainement avec une jointure mais comment !!?



Merci d'avance pour votre participation à la résolution de mon problème.



--


"2 choses sont infinies... L'Univers... et la bêtise humaine...
Mais en ce qui concerne l'Univers... ce n'est même pas certains !!!"

6 réponses

Messages postés
5
Date d'inscription
mardi 22 juillet 2003
Statut
Membre
Dernière intervention
16 septembre 2005

Voilà la requête SQL qui retourne le même résultat :



select

DEPartement.*, RAYon.*

FROM

RAYon

left join Product_RAyon

on

RAYon.RAY_id = Product_RAyon.RAY_id

and

PRO_id = "2",

DEPartement

where

Product_RAyon.RAY_id is null

and

DEPartement.DEP_id = RAYon.DEP_id

order by

DEPartement.DEP_nom_fr, RAYon.RAY_nom_fr


J'espère que cela pourra être utile à quiconque voudra transformer une requête NOT IN en requête LEFT JOIN !!!



A bientôt...



--


"2 choses sont infinies... L'Univers... et la bêtise humaine...
Mais en ce qui concerne l'Univers... ce n'est même pas certains !!!"
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Hello,



tu peux essayer avec la clause EXISTs : http://dev.mysql.com/doc/mysql/en/exists-and-not-exists-subqueries.html



Sinon, peut-être :



select *

from



DEPartement dep, RAYon ray, Product_RAyon prod

where



(dep.DEP_id = ray.DEP_id) and


(prod.PRO_id = '2')
and



(ray.RAY_id != prod.RAY_id)

order by



dep.DEP_nom_fr, ray.RAY_nom_fr
Messages postés
5
Date d'inscription
mardi 22 juillet 2003
Statut
Membre
Dernière intervention
16 septembre 2005

Merci quand même...



Mais ni EXISTS ne solutionne mon problème,



ni ta seconde solution ne retourne le résultat attendu...



Je continue de chercher de mon coté... mais merci encore...

"2 choses sont infinies... L'Univers... et la bêtise humaine...
Mais en ce qui concerne l'Univers... ce n'est même pas certains !!!"
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Alors fais un join sur les produits. Ca solutionnera :-) Mais c'est plus lent.
Messages postés
5
Date d'inscription
mardi 22 juillet 2003
Statut
Membre
Dernière intervention
16 septembre 2005

Problème résolu... je balancerais la réponse ce soir si cela peut servir à quelqu'un d'autre !



Merci encore !!!

"2 choses sont infinies... L'Univers... et la bêtise humaine...
Mais en ce qui concerne l'Univers... ce n'est même pas certains !!!"
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
7
Balance la solution... ça sert toujours



Puis balance là aussi sur SQLfrance... il sont pauves en solutions là-bas ;)



Bye