Choisissez parmi plusieurs tables avec la même condition, éviter toute erreur d'ambiguïté
-
11-10-2019 - |
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?
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
.