2009-08-11 33 views
6

當在SQL查詢中有LEFT JOINing表時,有時我需要引用ON子句中的多個表。例如:SQL錯誤:多部分標識符「tableName.ColumnName」無法綁定

SELECT p.Name, j.Job, s.Salary 
FROM PeopleTable p, JobTable j 
LEFT JOIN SalaryTable s ON s.PeopleID=p.PeopleID AND s.JobID=j.JobID 

然而,上述會給這個錯誤:

SQL Error: The multi-part identifier "p.PeopleID" could not be bound.

看來,在一個LEFT JOIN聲明ON子句只能「看見」在FROM列出的最後一個表名單。這是真的?任何解決方法?

+0

參見:http://stackoverflow.com/questions/1080097/the-multi-part-identifier-could-not-be-bound-on- sql-server-2005-8/1080407#1080407 – 2009-08-11 16:52:00

回答

7

你不能將SQL-89 Join語法「table,table」與SQL-92 Join語法「table LEFT JOIN table ON condition」混合使用

+1

它似乎你可以混合他們,但順序是重要的嘗試:select * from \t msdb..sysjobsteps s,msdb..sysjobs j 加入msdb..syscategories c on j.category_id = c.category_id 其中j。 job_id = s.job_id – 2009-08-11 16:30:11

+1

但以JerSchneid的方式混合它們顯然是不同的! – 2009-08-11 16:40:31

+0

我猜測外部連接在嘗試解析邏輯時會給編譯器帶來不可解決的問題。 (外部連接條件的特殊性是兩者之間顯着不同的事物之一)。 – RBarryYoung 2009-08-11 16:44:01

0

嘗試

SELECT p.Name, j.Job, s.Salary 
FROM SalaryTable s 
LEFT JOIN PeopleTable p on s.PeopleID = p.PeopleID 
LEFT JOIN JobTable j ON s.JobID = j.JobID 
0

我不是舒爾爲什麼SI即但從PeopleTable P,JobTable J的特徵可以用CROSS替代JOIN

SELECT p.Name, j.Job, s.Salary 
FROM PeopleTable p 
    CROSS JOIN JobTable j 
    LEFT JOIN SalaryTable s ON s.PeopleID=p.PeopleID AND s.JobID=j.JobID 

最佳Regrads, 約爾丹

+0

這將是因爲他已經將它寫成交叉連接已經在舊的過時的語法。我不相信他寫的是他真正需要的東西。 – HLGEM 2009-08-11 16:56:03

3

儘管交叉連接語法是您提供的內容的直接翻譯,但它可能並不適合您的情況。在離開加入 工資表之前,它會將所有人都關聯到所有工作。這似乎不太可能,這是你想要的。

你真的有沒有與工資無關的人嗎?對於這個問題,你是否希望看到與薪水或人員無關的工作?示例數據和結果集將幫助我們爲您提供一個能夠滿足您真正需要的查詢。我懷疑下列情況之一可能會給你更好的結果:

SELECT p.Name, j.Job, s.Salary 
FROM PeopleTable p 
JOIN SalaryTable s ON s.PeopleID=p.PeopleID 
RIGHT JOIN JobTable j ON s.JobID=j.JobID 

SELECT p.Name, j.Job, s.Salary 
FROM PeopleTable p 
JOIN SalaryTable s ON s.PeopleID=p.PeopleID 
JOIN JobTable j ON s.JobID=j.JobID 

SELECT p.Name, j.Job, s.Salary 
FROM SalaryTable s 
RIGHT JOIN PeopleTable p ON s.PeopleID=p.PeopleID 
RIGHT JOIN JobTable j ON s.JobID=j.JobID 
+0

我其實只是把這些表作爲例子。我偶爾碰到這種類型的表格,表格,左連接問題,我只是想知道是否有任何我不知道的技巧,除了重新排列我的查詢。 – JerSchneid 2009-08-12 16:37:35

相關問題