2010-11-02 17 views
1

J'ai un problème avec mysql où une instruction select interne est toujours évaluée avec la première ligne de la table externe. Dans le code suivant, "WHERE otherTable.someID = myTable1.table1_id" doit (dans mon esprit) correspondre au myTable1.table1_id externe qui est initialement sélectionné. C'est-à-dire que chaque ligne de la table1 est traitée, mais que l'intérieur myTable1.table1_id semble toujours être bloqué sur la première ligne de la table1, ce qui entraîne une sortie correcte pour la première ligne mais incorrecte pour toutes les autres lignes. C'est comme si je remplaçais l'intérieur myTable1.table1_id avec la valeur réelle de l'ID de la première rangée et couru cette requête.Mysql - Bloqué sur la valeur d'une seule ligne pour toutes les lignes?

Voici le code:

SELECT 
    myTable1.table1_id, 
    ..., 
    (SELECT otherStuff FROM otherTable WHERE otherTable.someID = myTable1.table1_id) 
FROM table1 myTable1 
ORDER BY myTable1.table1_id; 

Merci pour la recherche!

Répondre

2

On dirait que vous essayez de faire un simple rejoindre:

SELECT 
    myTable1.table1_id, 
    ..., 
    otherstuff from othertable 
FROM table1 myTable1 join othertable on myTable1.table1_id=othertable.some_ID 
ORDER BY myTable1.table1_id; 

Si vous devez récupérer les lignes de résultat même si uneautretable ne contient pas d'ID correspondant, changez le joint à un left join.

+0

Que se passe-t-il si myTable1 et otherTable sont des instances distinctes de la même table (les deux sont "table1")? – Greg

+1

N'est pas un problème, mais vous devez alias les références à la table par exemple.SELECT * FROM tabel1 t1 rejoindre table1 t2 WHERE t1.ref = t2.parentref – Jaydee