2011-10-30 13 views
0

このような2つのクエリがあります。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 

これは素晴らしいです。しかし、(内部結合部分の後に)別のクエリを実装しようとすると、エラーが発生します。

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 

私だけA.IDj.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. 

なぜわかりませんか。手段はテーブルはID列です。なぜj.IDが最初のクエリで機能しますが、2番目のクエリでA.IDが機能しないのはなぜですか?

+0

where句をコメントアウトするとどうなりますか? – arb

+0

あなたは暗黙的な構文を使用するべきではありません。 – HLGEM

+0

@HLGEMあなたが説明しようとしていることを理解できません。もっと詳しく説明できますか? –

答えて

2

差は2番目のクエリに句からマルチテーブルです:これは次のように実行されます

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

:最も内側のレベルでは

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

Aが定義され、あなたが取得されていませんエラー。

+0

ありがとう!それを学ぶのは大変です。 –

+0

「JOIN」のすべてのタイプがこのように機能していますか?または単に「INNER JOIN」ですか? JOINがすべてどのように実行されたかを説明できるページまたはリンクを表示できますか? –

関連する問題