2011-10-30 64 views
0

我有兩個像這樣的查詢;SQL:內部和左側加入多部分標識符錯誤

SELECT j.ID, j.Pkey, j.SUMMARY, j.CREATED, j.RESOLUTIONDATE 
     ,j2.SUMMARY, j2.CREATED, j2.RESOLUTIONDATE, j3.SUMMARY, j3.CREATED, j3.RESOLUTIONDATE 
FROM Jira.jiraissue As j 
INNER JOIN Jira.issuelink i 
    ON i.SOURCE =j.ID and i.SEQUENCE = 0 
INNER JOIN Jira.jiraissue As j2 
    ON i.DESTINATION =j2.ID 
LEFT JOIN Jira.issuelink i2 
    ON i2.SOURCE = j.ID and i2.SEQUENCE = 1 
LEFT JOIN Jira.jiraissue As j3 
    ON i2.DESTINATION = j3.ID 

This works great。但是當我嘗試實現(在內部連接部分之後)到另一個查詢時,出現錯誤。

SELECT A.pkey as KREDİ, A.SUMMARY , B.pname AS STATU, D.Sorumlu AS SORUMLU, A.CREATED, A.RESOLUTIONDATE, dbo.CUSTVAL(11931, A.ID, 'S') AS BAYİ, dbo.GetLastStatuTime(A.ID) AS SON_STATU_TAR,j2.SUMMARY, j2.CREATED,j2.UPDATED, j2.RESOLUTIONDATE, j3.SUMMARY, j3.CREATED, j3.UPDATED, j3.RESOLUTIONDATE 
FROM Jira.jiraissue A, jira.issuestatus B, AspNetServicesDB.dbo.STATU_MAP D 
INNER JOIN Jira.issuelink i 
    ON i.SOURCE = A.ID and i.SEQUENCE = 0 
INNER JOIN Jira.jiraissue As j2 
    ON i.DESTINATION =j2.ID 
LEFT JOIN Jira.issuelink i2 
    ON i2.SOURCE = A.ID and i2.SEQUENCE = 1 
LEFT JOIN Jira.jiraissue As j3 
    ON i2.DESTINATION = j3.ID 
WHERE A.issuestatus = B.ID 
AND 'BAŞARAN OTOMOTİV' = dbo.CUSTVAL(11931, A.ID, 'S') 
AND B.pname = D.JiraStatu collate Turkish_CS_AI 
AND A.issuetype != 11 

我只能改變j.IDA.ID。錯誤信息是;

The multi-part identifier "A.ID" could not be bound. 
Msg 4104, Level 16, State 1, Line 8 
The multi-part identifier "A.ID" could not be bound. 

我不明白爲什麼。一個意思是Jira.jiraissue表有ID列。爲什麼j.ID在第一個查詢中起作用,但在第二個查詢中不起作用A.ID

+0

如果你註釋掉where子句會發生什麼? – arb

+0

YOu不應該使用隱式語法,並且當與顯式語法結合時不應使用隱式語法。 – HLGEM

+0

@HLGEM我不明白你想要解釋的。你能解釋更多的細節嗎? –

回答

2

不同的是FROM子句中的多表中的第二個查詢:

FROM Jira.jiraissue A, (
    jira.issuestatus B, (
     AspNetServicesDB.dbo.STATU_MAP D 
     INNER JOIN Jira.jiraissue As j2 ON i.DESTINATION =j2.ID 
    ) 
) 

在最裏面的級別,A沒有定義,所以你得到:

FROM Jira.jiraissue A, jira.issuestatus B, AspNetServicesDB.dbo.STATU_MAP D 
INNER JOIN Jira.jiraissue As j2 ON i.DESTINATION =j2.ID 

這被作爲執行一個錯誤。

+0

謝謝!很好學習它。 –

+0

所有類型的'JOIN'都是這樣工作的?或者只是'INNER JOIN'?你能告訴我一個頁面或鏈接,可以解釋所有JOIN是如何執行的? –

相關問題