2017-09-14 35 views
1

我試圖執行查詢下面,但我收到錯誤:無法綁定多部分標識符'T2.ID'。混合顯式和隱式聯接

  SELECT DISTINCT 
       T4.ID 
     FROM dbo.TABELA1 T1, 
       dbo.TABELA2 T2, 
       dbo.TABELA3 T3, 
       dbo.TABELA4 T4 
       INNER JOIN dbo.TABELA5 T5 ON T4.ID = T5.ID 
       INNER JOIN dbo.TABELA6 T6 ON T5.ID = T6.ID 
       INNER JOIN dbo.TABELA7 T7 ON T6.ID = T7.ID 
       INNER JOIN dbo.TABELA8 T8 ON T7.ID = T8.ID AND <b>T2.ID</b> = T8.ID 
     WHERE T1.ID = T2.OID 

有人可以指出正確的方法來避免這個錯誤嗎?

+2

對於初學者,您應該與您的連接語法保持一致。我會推薦使用ANSI-92風格的連接(或顯式連接)。他們已經存在了超過25年。 –

+0

那麼內部連接,2個交叉連接和4個內部連接?您的連接順序會導致此問題。正如我在回答t3之後的任何事情一樣關閉,將會自行消失。使用一種語法類型,不能同時使用... – Twelfth

+0

謝謝Sean和Twelfth。真的,更好地使用一種方法。 – Aleksandro

回答

1

如果我沒有記錯,顯式連接正在隱式連接之前處理,因此 - t2.尚不可用。

解決方案:避免使用隱式連接語法,並使用恰當的連接語法,就像查詢的第二部分一樣。

+0

100%正確的sagi – Twelfth

0

最後一行:

WHERE T1.ID = T2.OID

是在T2.OID是否正確?它應該是T2.ID嗎?

0

您需要使用上述正確的連接語法。主鍵/外鍵是什麼?