Choisissez parmi plusieurs tables avec la même condition, éviter toute erreur d'ambiguïté

StackOverflow https://stackoverflow.com/questions/4490033

Question

Comment puis-je faire quelque chose comme ça, mais éviter le column common_reference is ambiguous d'erreur? Je sais qu'il est ambigu, je veux choisir de Table_Un tous les résultats pour common_reference là, et Table_Deux même.

SELECT * FROM table_one, table_two WHERE common_reference = 42

Ceci est évidemment pas aller au travail, alors comment puis-je utiliser les sous-requêtes pour obtenir ce que je dois?

Était-ce utile?

La solution 4

Comme le suggère Mchl dans les commentaires UNION a été la solution.

Autres conseils

Commencez par ...

SELECT * FROM table_one, table_two WHERE table_one.common_reference = 42

... et continuer cette route:

SELECT * FROM table_one as T1, table_two as T2 WHERE T1.common_reference = 42
SELECT table_one.* FROM table_one, table_two WHERE table_one.common_reference = 42

MySQL vous permettra de savoir par erreur s'il y a une ambiguïté dans votre SQL impossible à résoudre.

Si vous souhaitez référencer un champ spécifique qui existe aussi dans une autre table (ou la même table si vous faites une jointure sur elle-même), utiliser des champs qualifiés

SELECT * FROM table_one, table_two WHERE table_one.common_reference = 42

et / ou pour alias la table

SELECT * FROM table_one T1a, table_one T1b WHERE T1a.common_reference = 42

NB: Un avertissement, comme Mchl note, ce sont des produits cartésiens et non typique s'associe

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top