2013-09-01 3 views
0

J'ai deux tablesOracle requête de jointure

  • Le tableau A a des colonnes id|name|age. Le tableau B contient les colonnes id|name|age.

Records exemples du tableau A

1|xavi  |23 
2|christine|24 
3|faisal |25 
5|jude  |27 

Records exemples du tableau B

1|xavi  |23 
2|christine|22 
3|faisal |23 
4|ram  |25 

Si les valeurs id de la table A correspond au tableau B que de prendre les enregistrements de la table A uniquement. Prenez également des documents qui sont présents dans le tableau A ne prendre également des documents qui sont présents dans le tableau B ne

donc mon résultat devrait être

1|xavi  |23 
2|christine|24 
3|faisal |25 
4|ram  |25 
5|jude  |27 
+0

Quelle est la question? – Ventura

Répondre

0

Vous avez un problème de précédence ici. Prenez tous les enregistrements de la table A, puis les enregistrements supplémentaires du tableau B:

select * 
from A 
union all 
select * 
from B 
where B.id not in (select A.id from A); 

Vous pouvez également exprimer avec un full outer join (en supposant id n'est pas dupliqué dans les deux tables):

select coalesce(A.id, B.id) as id, 
     coalesce(A.name, B.name) as name, 
     coalesce(A.age, B.age) as age 
from A full outer join 
    B 
    on A.id = B.id; 

En Dans ce cas, coalesce() donne la priorité aux valeurs de A.

0
select distinct * FROM 
(
select ID, NAME, AGE from TableA 
UNION ALL 
select ID, NAME, AGE from TableB 
) TableAB 

Quelques choses à considérer -> À moins que vous Si vous mettez à jour des tables spécifiques et que les enregistrements sont les mêmes, peu importe la table dont vous consultez les enregistrements (car ils sont identiques ...). Faites-le moi savoir et je vous montrerai comment faire cela ... mais la requête est plus complexe et je ne pense pas que ce soit vraiment nécessaire pour le but décrit ci-dessus. laissez-moi savoir si cela aide ... merci, Brian

1

Vous pouvez simplement utiliser l'opérateur union pour obtenir des valeurs uniques à partir des deux tables. L'opérateur UNION supprimera les valeurs répétées.

SELECT * FROM tableA AS t1 
UNION 
SELECT * FROM tableB AS t2 
0

Si les tables a une relation dont vous avez besoin:

Select DISTINCT * 
    from tableA a 
Inner Join tableB b 
    On a.id = b.id 

Dans le cas contraire:

Vous devez utiliser UNION et après l'utilisation DISTINCT. DISTINCT n'autorise pas les lignes répétées.