2011-12-08 22 views
1

私は5つのテーブルを持っており、結果を得たいと思います。 (私はそれを明確なものを置かない場合)、

Oracle SQLクエリ(LEFT OUTER JOIN)

 
select 
     person.SERVICE_NO as Service_No, person.CNIC_NO as CNIC, person.NAME as NAME , card.CPLC_SERIAL_NO as Card_Number, 
     child_dc.NAME as Child_DC, root_dc.NAME as Root_DC, person.OU as OU, person.EMAIL as Email 
from 
     person,card,person_card,child_dc,root_dc 
where 
     person_card.PERSON_ID = person.ID 
and 
     person_card.CARD_ID = card.ID 
and 
     person.CHILD_DC_ID = child_dc.ID 
and 
     root_dc.ID = child_dc.ID; 

をこのクエリは、冗長値を与える:ここで私がやっているものです。私は参加していない状態でそれをやろうと考えていた。つまり、私は5テーブルでLEFT OUTER JOININGになります。どうしたらいい?誰かがもっと最適化されたクエリや他のアイデアを持っているなら、それは素晴らしいでしょう。

答えて

2

クエリ更新日:

select distinct 
    person.SERVICE_NO as Service_No, 
    person.CNIC_NO as CNIC, person.NAME as NAME , 
    card.CPLC_SERIAL_NO as Card_Number, 
    child_dc.NAME as Child_DC, 
    root_dc.NAME as Root_DC, person.OU as OU, 
    person.EMAIL as Email 
from 

    person_card inner join person 
    on person_card.PERSON_ID = person.ID 
    inner join card 
    on person_card.CARD_ID = card.ID 
     left outer join child_dc 
    on person.CHILD_DC_ID = child_dc.ID 
     left outer join root_dc 
    on child_dc.ID = root_dc.ID; 
+0

は、そのキーの単語が欠落し、動作していません。 –

+0

今すぐお試しください。私はキーワードonを欠いていた – reggie

+0

ちょうどあなたが最後の行に配置することを忘れたことに気付きました、さらに、私は別名を置かない場合、その混乱。どちらの場合も同じ結果が得られますので、どのようにクエリを最適化してクエリを格付けしますか? –