2014-10-03 27 views
-4

我的(多個表說)4個表中,A,B,C和d,它們由相似的一些共同的值鏈接:SQL查詢來取數據輸出多個表

TableA(A1,A2,A3,A4) ---> TableB(A1,B2,B3,B4) ---> TableC(C1,C2,B3,C4) ---> TableD(D1,D2,D3,C4) 
           |        | 
         TableX(X1,B2,X3,X4)  TableY(Y1,Y2,Y3,C4) 

對於每個唯一值A2,有一個值A1。相同的價值A1TableB。 類似地,在TableB,對於A1每一個值,存在一些特定值B2,B3,B4, 以相同的方式在TableCTableD也,爲B3C4每個值分別有具體的剩餘值。

除了直線流有多個流其間(如從表B到TableX的或表C至TableY)

我想提取某些列說例如A1,A2,B2,C1,D1C4如果我給定的A2的值。

我是新來的這類查詢和短時間來完成任務。

在此先感謝您的幫助。

+1

我想一個簡單的'JOIN'就可以解決這個問題 – 2014-10-03 09:01:31

+2

[INNER和OUTER連接之間的區別]的可能的重複(http://stackoverflow.com/questions/38549/difference-between-inner-and-outer-joins ) – 2014-10-03 09:14:17

回答

0

您必須使用多個連接是這樣的:

Select TableA.A1,TableA.A2,TableB.B2,TableC.C1,TableC.C4 from 
TableA join TableB on TableA.A1=TableB.A1 
join TableC on TableB.B3=TableC.B3  
where A2='....' 
0

雖然貼有表和解釋的樣品差一個可怕的問題,對如何將所有的領域聯繫在一起的查詢首先啓動。一旦你建立了所有的JOIN條件,然後添加你在哪裏尋找從數據

select * 
    from 
     TableA a 
     JOIN TableB b 
      on a.A1 = b.A1 
      JOIN TableC c 
       on b.b3 = c.b3 
       JOIN TableD d 
        on c.c4 = d.c4 
    where 
      a.field = '?' 
     AND d.field = '?' 

或特定元素的任何標準,你正在尋找...,只是使用別名引用,如(一,b,c,d)

從佈局中注意到我有我的SQL,您可以通過簡單的可視化縮進和各個表之間非常明確的列關係,精確地查看一個表如何與另一個表連接的層次結構。

+0

感謝承受這樣一個可怕的問題,但第一次工作,需要今天完成項目,我沒有其他選擇。我得到了流量,但如果流量不是線性的。從TableA到TableB到TableC到TableD是存在的(如最初的問題),但是如果我有一個子流從TableB到TableX,並且可能是另一個子流,如表C到TableY。我應該如何適應這個?謝謝你的幫助。 – Jivi 2014-10-03 12:40:02

+0

@Jivi,你必須在普通元素的表格之間有某種連接。這是關係數據庫的重點。只需將連接添加到其他表中。如果tableC可以連接到D,X和Z,那麼每一個都分別加入到C表中。如果在.. tableX中沒有保證記錄,那麼將它作爲LEFT JOIN來表示,即使右表(tableX)中沒有一個記錄,也需要左表(tableC)中的記錄。如果你有更多的這些子流程,更新你的問題,我會修改我的答案。 – DRapp 2014-10-03 12:51:24