的問題是,你正在試圖訪問,你有沒有在你的WHERE
和SELECT
條款都告訴查詢有關表。當您在您的SELECT
子句中說Bill.BillID
時,您說您要從名爲Bill
的表中選擇字段BillID
。
你的語法是打破的規則是,你不能在SELECT
或WHERE
條款使用一個表名,除非你的FROM
條款(或JOIN
)中提到它。
現在,我們來看看您的查詢。
SELECT Bill.BillID, Duty.TaskTime
FROM Invoice
LEFT OUTER JOIN Duty.JobID = Bill.JobID
WHERE Job.CustomerID = Customer.CustomerID
這意味着你要挑名爲Bill
和Duty
的表中的字段,並篩選基於從Job
和Customer
表字段中的結果。但是,您只在FROM
子句(Invoice
)中按名稱提及了一個表。你已經差不多加入了Duty
表,但是你將它加入表中尚未提及的地方(Bill
)。我打算猜想您打算使用Bill
作爲別名對於Invoice
。這將意味着你真正想要的是更喜歡:
// Still incorrect
SELECT Bill.BillID, Duty.TaskTime
FROM Invoice AS Bill
LEFT OUTER JOIN Duty ON Duty.JobID = Bill.JobID
WHERE Job.CustomerID = Customer.CustomerID
但是我們仍然沒有提及任何屬於WHERE
子句中引用的Job
或Customer
表。爲了使用它們,您還需要JOIN
這些表格。我們需要了解更多關於您的模式以瞭解如何實現這一點,但我可以告訴您至少需要兩個JOIN
子句。假設您在Invoice
表中有一個CustomerID
字段,我們可能想要像這樣加入。
// speculative
SELECT Bill.BillID, Duty.TaskTime
FROM Invoice AS Bill
LEFT OUTER JOIN Duty ON Duty.JobID = Bill.JobID
JOIN Customer ON Customer.CustomerID = Bill.CustomerID
JOIN Job ON // Well, something...We don't know.
我強烈建議您花一些時間閱讀和學習優秀Wikipedia entry on SQL JOINs。祝你好運〜
我想你需要花些時間閱讀如何編寫SQL聯接。你的查詢根本沒有意義。 – kosa
似乎你沒有聲明任何別名。 –