2014-05-09 6 views
0

J'ai deux tables similaires qui contiennent des noms de campagne. Je sais que je peux faire un tout pour combiner les tables, mais je me demandais s'il y avait un moyen de le faire en utilisant une forme de Join à la place? Je veux créer une table Z avec les noms de campagne pour la table A et les noms de campagne de la table B (qui ne sont pas dans A). Puis-je le faire avec une jointure ou est-ce que l'union est la seule façon?Joindre ou regrouper tous pour combiner des enregistrements?

+0

Si vous nous fournissez vos schémas de table, nous pouvons probablement vous aider. Sinon, nous devinerions. –

+0

Notez que les noms de campagne 'UNION ALL' n'obtiendront pas" pour la table A plus les noms de campagne de la table B (qui ne sont pas dans A) ". La partie non dans A ne sera pas gérée par le 'UNION ALL '. Si vous voulez seulement des valeurs distinctes, vous avez besoin d'UNION. – liebs19

Répondre

0

UNION est la manière la plus simple et la plus efficace de le faire. Purement pour l'exercice, vous pouvez le faire avec un JOIN, mais il est beaucoup plus complexe, illisible et PERF sera bien pire ...

+0

Cela a du sens. Je comprends que la deuxième réponse fonctionne aussi, mais je me demandais sur le plan du design, ce qui était l'option la plus viable. Merci! – bvachicago

0
SELECT * INTO TABLEZ 
FROM 
    (
    SELECT Column1, Column2, Column3.... FROM TABLEA 
    UNION ALL 
    SELECT Column1, Column2, Column3.... FROM TABLEB 
)Q 
0

Voici comment vous faire cela avec un full outer join:

select distinct coalesce(a.campaign, b.campaign) 
from b left outer join 
    a 
    on a.campaign = b.campaign; 

L'approche union/union all est totalement raisonnable. Je propose juste cela comme une solution join que vous semblez faire allusion à la question.

Questions connexes