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
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.
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
SELECT table1.col_a, table1.col_b, table2.col_c
FROM table1
INNER JOIN table2 ON table1.col_a = table2.col_a