2011-11-17 7 views
0

J'ai trois tables comme suit:Rejoindre trois tables en utilisant Oracle

table 1   table 2   table 3 
-------   -------   ------- 
a    a    a 
b    c    c 
c    f     
d 
e 
f 

Je veux rejoindre ces trois tables en 1 qui résulteront à ce qui suit:

result table 
------------ 

a    a    a 
b 
c    c    c 
d 
e 
f    f 

Remarqué que le deuxième et la troisième colonne contient une ligne vide si elle ne correspond pas. Comment puis-je y parvenir en utilisant Oracle SQL?

+0

C'est une question de devoirs. S'il vous plaît dites ce que vous avez essayé jusqu'à présent. – Tomalak

+0

@Tomalak J'ai essayé d'utiliser select * de table1, table2, table3 où table1.primarykey = table2.primarykey et table2.primarykey = table3.primarykey – epsac

+0

@OMG Poneys J'utilise le (+) mais n'obtient pas ce que je désirais. – epsac

Répondre

0
-- Enhance table 
alter table table1 add (field2 /*e.g.*/ varchar2(10) 
         ,field3 /*e.g.*/ varchar2(10)); 

-- update rows roughly works like this. (I don't exactly know your column names, primary keys, etc) 
update table1 o set o.field2 = (select i.field from table2 
           where o.field1 = i.field); 
2
SELECT * 
FROM table1 
LEFT OUTER JOIN table2 ON (table1.name = table2.name) 
LEFT OUTER JOIN table3 ON (table1.name = table3.name) 
Questions connexes