2010-12-11 5 views
2

Possible en double:
MySQL: FULL OUTER JOIN - How do I merge one column?JOIN SQL pour retourner les lignes NULL à la fois la table gauche et à droite

réel simple question, mais me suis complètement confus.

Dire que j'ai les tableaux suivants:

tbl1

id - count1
a - 7
b - 4
d - 2

tbl2

id - count2
a - 3
c - 4

Je veux créer une table qui donne le résultat suivant:

tbl_temp

id - count1 - count2
un - 7 - 3
b - 4 - null
c - null - 4
d - 2 - null

De quel type de jointure ai-je besoin?

Cheers,

Ben

Répondre

7

Idéalement, vous souhaitez utiliser une jointure externe, mais il est not supported in MySQL. Au lieu de cela, vous pouvez l'émuler en utilisant une gauche et une droite OUTER JOIN (ou une autre gauche avec les tables inversées) et UNION TOUS les résultats.

SELECT 
    tbl1.id, 
    tbl1.count1, 
    tbl2.count2 
FROM tbl1 
LEFT JOIN tbl2 
ON tbl1.id = tbl2.id 

UNION ALL 

SELECT 
    tbl2.id, 
    tbl1.count1, 
    tbl2.count2 
FROM tbl2 
LEFT JOIN tbl1 
ON tbl1.id = tbl2.id 
WHERE tbl1.id IS NULL 

ORDER BY id 

Résultats:

 
id count1 count2 
a 7  3  
b 4  NULL 
c NULL 4  
d 2  NULL 
+1

http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/ regarder ici pour différentes solutions. –

Questions connexes