Salut bon juste un petite question, je veux faire une requete du genre select truc from bidule where truc2 IN (select truc2 from bidule2 where...)
Mon pb est que j'ai une erreur et que je ne l'a comprends pas alors voila mon code + erreur mysql :
SELECT nom
FROM table1
WHERE prenom = 'TOTO' AND id
IN (
SELECT id
FROM table2
WHERE entreid = '13'
) LIMIT 0, 30
MySQL a répondu:
#1064 - You have an error in your SQL syntax near 'SELECT id
FROM table2
WHERE entreid = '13 ' ) LIMIT 0, 30' at line 5
Merci à tous !
# requetes imbriquées
Posté par Hardy Damien . Évalué à 4.
Dam
# Sous-Select not supported
Posté par Damien Metzler . Évalué à 3.
[^] # Re: Sous-Select not supported
Posté par roule007 . Évalué à 2.
Comment faire alors pour avoir le même rendu, par exemple pour la requete du dessus ???
A L'AIDE :S
[^] # Re: Sous-Select not supported
Posté par mac . Évalué à 3.
- "SELECT id FROM table2 WHERE entreid = '13'"
Tu récupères les résultats, et tu construits dynamiquement la seconde requêtes :
- "SELECT nom FROM table1 WHERE prenom = 'TOTO' AND id IN ($blablabla) LIMIT 0, 30"
Je te laisse traiter les cas particuliers ou la 1ère requête ne retourne rien à titre d'exercice :)
# Je crois que
Posté par francoisp31 . Évalué à -1.
par contre sous postgres là oui cette requette serait surement valide sans modification.
# EXISTS
Posté par dab . Évalué à 1.
http://www.nexen.net/docs/mysql/annotee/exists-and-not-exists-subqu(...)
# jointure
Posté par gaaaaaAab . Évalué à 2.
select nom
from table1, table2
where table1.prenom = 'TOTO'
and table1.id = table2.id
and table2.entreid = '13';
+ le LIMIT, mais comme je ne connais pas la syntaxe, je m'abstiens
cela dit, je suis un peu surpris que ton entreid soit une chaine de caractères.
Si c'est censé être un identifiant avec que des chiffres, c'est probablement
un numérique, donc 13 plutôt que '13'
[^] # Re: jointure
Posté par Dring . Évalué à 2.
Par contre, je préfère la syntaxe ANSI, plus explicite à mon goût :
SELECT t1.nom
FROM
table1 t1
INNER JOIN table2 t2 ON t1.id = t2.id
WHERE
t2.entreid = '13'
AND t1.prenom = 'TOTO'
Après, quelques tests de performances pour s'assurer de la meilleure solution sont toujours bienvenus...
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.