web-dev-qa-db-fra.com

comment sélectionner une valeur distincte à partir de plusieurs tables

J'ai besoin d'obtenir des valeurs distinctes de 3 tables.

Quand j'exécute ce code:

select DISTINCT(city) from a,b,c 

J'obtiens une erreur qui indique que ma colonne "ville" est ambiguë.

J'ai aussi essayé ceci:

select DISTINCT(city) from a NATURAL JOIN b NATURAL JOIN c

Avec ce code, je ne reçois rien de mes tables.

Permettez-moi de vous montrer l'exemple de ce que j'essaie de faire:

TABLE A               TABLE B                TABLE C
id  |  city           id  |  city            id  | city
1   |  Krakow         1   |  Paris           1   | Paris
2   |  Paris          2   |  London          2   | Krakow
3   |  Paris          3   |  Oslo
4   |  Rome

Et je dois obtenir un résultat comme celui-ci

RESULTS
 city
 ----
 Krakow
 Paris
 Rome
 London
 Oslo

L'ordre des villes n'est pas important pour moi, j'ai juste besoin de les avoir toutes, et il ne devrait y avoir qu'une seule représentation de chaque ville.

Une idée? Je pensais utiliser id's dans le JOIN mais il n'y a pas de connexion donc je ne peux pas l'utiliser.

25
user123_456

Le mot clé UNION renverra les enregistrements unique dans la liste des résultats. Lorsque vous spécifiez ALL ( ( UNION ALL ) conservera des doublons sur le jeu de résultats, que l'OP ne fait pas ' je veux pas.

SELECT city FROM tableA
UNION
SELECT city FROM tableB
UNION
SELECT city FROM tableC

RÉSULTAT

╔════════╗
║  CITY  ║
╠════════╣
║ Krakow ║
║ Paris  ║
║ Rome   ║
║ London ║
║ Oslo   ║
╚════════╝
53
John Woo
SELECT city FROM A
UNION DISTINCT
SELECT city FROM B
UNION DISTINCT
SELECT city FROM C
3
James C