web-dev-qa-db-fra.com

Joindre 2 ensembles de résultats SQL SELECT en un seul

J'ai 2 instructions select, renvoyant des données comme ceci:

Select 1
col_a   col_b

Select 2
col_a   col_c

Si je fais l'union, je reçois quelque chose comme

col_a col_b

Et les rangées se sont jointes. Ce dont j'ai besoin, c'est de l'obtenir comme ceci:

col_a  col_b  col_c

Rejoint sur les données dans col_a

28
Vance

Utilisez JOIN pour joindre les sous-requêtes et ON pour dire où les lignes de chaque sous-requête doivent correspondre:

SELECT T1.col_a, T1.col_b, T2.col_c
FROM (SELECT col_a, col_b, ...etc...) AS T1
JOIN (SELECT col_a, col_c, ...etc...) AS T2
ON T1.col_a = T2.col_a

S'il y a des valeurs de col_a qui sont en T1 mais pas en T2, vous pouvez utiliser un LEFT OUTER JOIN à la place.

46
Mark Byers

Utilisez une FULL OUTER JOIN:

select 
   a.col_a,
   a.col_b,
   b.col_c
from
   (select col_a,col_bfrom tab1) a
join 
   (select col_a,col_cfrom tab2) b 
on a.col_a= b.col_a
4
p2u
SELECT table1.col_a, table1.col_b, table2.col_c 
  FROM table1 
  INNER JOIN table2 ON table1.col_a = table2.col_a
2
Håvard S