2017-03-03 43 views
0

我想加入4個不同的表來計算項目的收入取決於一些條件,我會編寫SQL查詢後,我能夠建立正確的看法,使用4個表...下面是查詢的視圖和我得到曖昧列錯誤爲ik ...可以請某人解釋爲什麼? 感謝您的幫助!列引用是模棱兩可的sql錯誤

select top 5 g.* 
from (
    select * 
    from (
     (
      select a.ik 
       ,b.upc as upc 
       ,b.class 
       ,a.units 
      from Tbl1 a 
      join TBL2 b 
       on a.ik = b.ik 
      ) c join Tbl3 d 
      on c.ik = d.ik 
     ) e 
    join Tbl4 f 
     on e.ik = f.ik 
    ) g 
+1

您正在使用'選擇*'用'join'連接多個表。某些表具有重複的列名稱。 –

+0

您將'e'中的結果加入到'Tbl4'中,並在該結果上執行'Select *',這會給出兩個'ik'值。將'Select *'更改爲只返回您關心的值。一個側面說明 - 我認爲你的查詢可以簡化,但我沒有絲毫的想法你想要做什麼。 – Siyual

+0

爲什麼不嘗試使用CTE或臨時表呢?在我看來,最好排除故障,讓每個人閱讀起來更輕鬆。 – NonProgrammer

回答

0

很難遵循什麼這個查詢是幹什麼的,但因爲你是使用子查詢,嘗試在每個地方包括在選擇查詢的選擇部分走樣ik(即select a.ik as 'aliased_ik') 。

您也不應該在外部select查詢中使用.*,而是使用每個單獨的列名稱。如果ik位於外部選擇查詢中,則應該別名。

2

當你加入,你可以運行SELECT *, 你應該把表的別名

select top 5 g.* 
from (
    select * 
    from (c.*,b.* 
     (
      select a.ik 
       ,b.upc as upc 
       ,b.class 
       ,a.units 
      from Tbl1 a 
      join TBL2 b 
       on a.ik = b.ik 
      ) c join Tbl3 d 
      on c.ik = d.ik 
     ) e 
    join Tbl4 f 
     on e.ik = f.ik 
    ) g 
相關問題