2016-06-20 9 views
1

Ich habe drei Tabellen:Wie können wir drei Tische verbinden?

TABLE1

D_ID O_COUNT STATUS  P_ID Q_ID 
1   1 close  111 L_1 
2   1 Resolved 111 L_1 
3   1 close  111 L_1 
4   0 open  111 L_1 
5   0 new  111 L_1 
6   1 close  111 L_1 

TABLE2_DL

D_ID D_LID C_ID E_ID Q_ID P_ID 
    1  11  3  23  L_1 111 
    2  12  3  24  L_1 111 
    3  13  3  25  L_1 111 
    4  14  3  26  L_1 111 
    5  15  3  21  L_1 111 

TABLE3_TED

EXEC_ID EXEC_STAT TEAM  C_ID 
24  FAILED  Pharma 3 
28  FAILED  Pharma1 3 
29  FAILED  Pharma 3 
25  FAILED  Pharma 3 
26  FAILED  Pharma1 3 
27  FAILED  Pharma2 3 

Dies ist der Code, den ich geschrieben habe.

select D_ID, D_LID, E_ID,ted.EXEC_STAT,ted.TEAM, 
DL.P_ID,DL.Q_ID,ted.C_ID, 
(case 
when upper(ted.EXEC_STAT) like 'FAIL%' then 1 
else 0 
end) as FAILED, 
(select O_COUNT from TABLE1 dd 
where dd.D_ID = dl.D_ID 
and dd.P_ID=dl.P_ID 
and dd.Q_ID=DL.Q_ID) OPENCOUNT, 
(select Status from TABLE1 dd 
where dd.d_id = dl.d_id 
and dd.p_id=dl.p_id 
and dd.q_id=DL.Q_ID) Status 
from TABLE2_DL DL,TABLE3_TED ted 
where DL.D_ID in (select d_id from TABLE1 dd 
where dd.d_id = dl.d_id 
and dd.p_id=dl.p_id 
and dd.q_id=DL.Q_ID 
) 

and dl.E_ID = ted.EXEC_ID; 

Ergebnis:

2 12 24 FAILED Pharma 111 L_1 003 1 1 Resolved 
3 13 25 FAILED Pharma 111 L_1 003 1 1 close 
4 14 26 FAILED Pharma1 111 L_1 003 1 0 open 

diese Abfrage holt die Datensätze für mich. Aber was ich wirklich will, sind alle Datensätze, die aus TABLE3_TED abgerufen werden, und ausgewählte Datensätze aus den anderen beiden Tabellen. Ich habe versucht, table1 und TABLE2_DL zuerst zu verbinden und diese Abfrage mit einem Alias ​​zu versehen und dann diese Abfrage mit TABLE3_TED zu verbinden, aber ich bekomme immer noch nicht alle Datensätze von TABLE3_TED. Bitte helfen Sie.

P.S. Ich bin neu in diesem Portal und ich wusste nicht, wie man Tabellen erstellt. Kann mir bitte jemand dabei helfen? Danke im Voraus. :)

Antwort

0

Ich könnte das falsch lesen, aber es klingt, als ob Sie nach einem OUTER JOIN suchen. Versuchen Sie Folgendes:

Select  DD.D_Id, 
      DD.D_LId, 
      DL.E_Id, 
      TED.EXEC_STAT, 
      TED.TEAM, 
      DL.P_Id, 
      DL.Q_Id, 
      TED.C_Id, 
      Case When Upper(TED.EXEC_STAT) Like 'FAIL%' 
       Then 1 
       Else 0 
      End As FAILED, 
      T1.O_COUNT As OPENCOUNT, 
      T1.Status 
From  Table3_TED TED 
Left Join Table2_DL DL On DL.E_Id = TED.EXEC_Id 
Left Join Table1  DD On DD.D_Id = DL.D_Id 
          And DD.P_Id = DL.P_Id 
          And DD.Q_Id = DL.Q_Id 
Verwandte Themen