簡體   English   中英

如何將一個表與兩個表連接在一起?

[英]How to join a same table with two tables?

我想創建一個Oracle數據庫的視圖:

create or replace force view view_ind_pta (indi_code, nat_indi_code, indi_unite, indi_symbole, indi_lib, indi_cible, pta_intitule, indi_resp, 
indi_source_info, user_code, peri_mes_code, peri_mes_lib, pta_parent, deleted,obj_intitule,pta_action) 
as 
select distinct
i.indi_code,
i.nat_indi_code,
i.indi_unite,
i.indi_symbole,
to_char(i.indi_lib) as indi_lib,
i.indi_cible,
concat(concat(to_char(a.pta_ref),' - '),to_char(a.pta_intitule)) as pta_intitule,
i.indi_resp,
to_char(i.indi_source_info) as indi_source_info,
u.user_code,
i.peri_mes_code , 
pm.peri_mes_lib ,
concat(concat(to_char(p.pta_ref),' - '),to_char(p.pta_intitule)) as pta_parent,
i.deleted ,
to_char(o.obj_intitule) as obj_intitule,
concat(concat(to_char(action.pta_ref),' - '),to_char(action.pta_intitule)) as pta_action
from
indicateur i
left join acteur_saisie_indicateur ai on ai.indi_code = i.indi_code
left join acteur_verif_indicateur avi on avi.indi_code = i.indi_code
left join utilisateur u on ( ai.user_code = u.user_code and avi.user_code = u.user_code) 
left join objectif o on i.obj_code = o.obj_code
left join pta a on o.pta_code = a.pta_code
left join pta action on a.pta_pta_code = action.pta_code
left join pta p on action.pta_pta_code = p.pta_code 
left join periodicite_mesure pm on pm.peri_mes_code = i.peri_mes_code
where p.pta_definitif = 3;

該視圖中有一個表utilisateur ,我想將其與兩個表acteur_saisie_indicateuracteur_verif_indicateur結合使用 我嘗試了and運算符,但我認為這不是一個好主意,因為僅當兩個表中都有連接的行時,查詢才會返回行! 盡管這不是必需的:即使僅一個表具有聯接的行,我也希望查詢返回行。 那么如何聯接這三個表呢?

您需要兩次加入表:

left join acteur_saisie_indicateur ai on ai.indi_code = i.indi_code
left join acteur_verif_indicateur avi on avi.indi_code = i.indi_code
left join utilisateur u on ai.user_code = u.user_code 
left join utilisateur u2 on avi.user_code = u2.user_code

我們可以在FROM子句中多次包含同一個表。 我們需要做的就是使用不同的別名來區分實例:

left join utilisateur uai 
    on ai.user_code = uai.user_code
left join utilisateur uavi 
    on avi.user_code = uavi.user_code

你需要做的另一件事是在視圖的投影句柄表中的列。 您希望顯示utilisateur值,而不管該值來自哪個實例,例如,使用nvl()或行業標准的coalesce()

coalesce(uai.user_code, uavi.user_code) as user_code

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM