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

Signaler
Messages postés
99
Date d'inscription
jeudi 24 avril 2014
Statut
Membre
Dernière intervention
7 juin 2014
-
Messages postés
99
Date d'inscription
jeudi 24 avril 2014
Statut
Membre
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
A voir également:

3 réponses

Messages postés
32986
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 juin 2021
351
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. ..

Messages postés
32197
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
18 juin 2021
1
Salut,

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

cdlt
Messages postés
32986
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 juin 2021
351
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
Messages postés
99
Date d'inscription
jeudi 24 avril 2014
Statut
Membre
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
Messages postés
32986
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 juin 2021
351
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.
Messages postés
99
Date d'inscription
jeudi 24 avril 2014
Statut
Membre
Dernière intervention
7 juin 2014

ahhhh donc il faut les éviter merci bcp :)