Oracle SQL Query (LEFT OUTER JOIN) - PullRequest
       0

Oracle SQL Query (LEFT OUTER JOIN)

1 голос
/ 08 декабря 2011

У меня есть пять таблиц, и я хочу получить из них результат.Вот что я делаю:

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 таблицами.Как бы я это сделал?Если у кого-то есть более оптимизированный запрос или любая другая идея, это было бы замечательно.

1 Ответ

2 голосов
/ 08 декабря 2011

Запрос обновлен:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...