Subquery returns more than 1 row?? [Résolu]

Messages postés
99
Date d'inscription
jeudi 24 avril 2014
Dernière intervention
7 juin 2014
-
Bonjour,
salut j'ai un probleme concernant une requete voila la requete :
SELECT TYPE
FROM TYPE WHERE idT = ( 
SELECT idT FROM la3ba
WHERE idS = ( 
SELECT idS FROM smodule
WHERE nomS =  "ana" ) ) 

avec cette requete je veux afficher les nom des types associées à un sous module,j'ai 3 tables:type,sous module et une qui s'appelle la3ba qui associe la clé primaire de type avec clé primaire de sous module.
et l'erreur qui s'affiche est celui crée dans le titre .
pouvez vous m'aider svp ?merci d'avance
Afficher la suite 

Votre réponse

3 réponses

Messages postés
23650
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 décembre 2018
0
Merci
Bonjour.
Oula.. des sous requêtes dans des sous requêtes. ..arghhh....

Orientes toi plutôt vers des jointures.

Si tu veux plus d'aide. ..il nous faudra la structure de tes tables. ..

Commenter la réponse de jordane45
Messages postés
23737
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
18 décembre 2018
0
Merci
Salut,

Devant tes sous requêtes, tu pourrais remplacer le = par IN ainsi tu auras les multiples réponses qui pourront t'orienter.

cdlt
Commenter la réponse de jee pee
Messages postés
23650
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 décembre 2018
0
Merci
Bonjour,

Même si le IN devrait résoudre le souci du demandeur... il n'en reste pas moins que l'utilisation de sous requêtes en cascades est une mauvaise idée... surtout lorsque d'autres choix sont possibles..

Par exemple :

SELECT t.TYPE 
FROM    TYPE t
           , la3ba l
           , smodule s
WHERE t.idT = l.idT
AND l.idS = s.idS
AND s.nomS = "ana"


ou encore un truc du genre :

SELECT t.TYPE 
FROM    TYPE t
LEFT JOIN  la3ba l  ON (t.idT = l.idT)
LEFT JOIN  smodule s ON (l.idS = s.idS AND s.nomS = "ana")



Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
EL.marwaa123
Messages postés
99
Date d'inscription
jeudi 24 avril 2014
Dernière intervention
7 juin 2014
-
merci pour ces explications tous ces reponses marche bien ,mais je suis débutante en sql donc j'ai pas assez de connaissances come vous.mais ce que j'ai appris ce que les requetes sans jointure sont les plus optimales surtout si c'est le cas d'une grande base de données. car une requete qui s'execute dans une seconde n'est pas similaire à une autre qui s'execute dans 2sec. est ce que c'est vrais? merci infiniment
jordane45
Messages postés
23650
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 décembre 2018
-
Disons plutôt que des sous requêtes c'est un peu comme faire des boucles... plus tu en mets..plus ça alourdi l'exécution du code.
EL.marwaa123
Messages postés
99
Date d'inscription
jeudi 24 avril 2014
Dernière intervention
7 juin 2014
-
ahhhh donc il faut les éviter merci bcp :)
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.