我的工作我的高級項目,我們使用的是嵌入式Apache Derby數據庫工作。我試圖從下面的三個表中查詢數據,但遇到了麻煩。「IN」和「INNER JOIN」關鍵字不能與數據庫
_________________
|Customers |
|-----------------|
| *Customer_ID |
| LastName |**
| FirstName |**
| PhoneNumber |
| Street |
| City |
| State |
| ZipCode |
| Note |
-----------------
_________________
|Jobs |
|-----------------|
| *Job_ID |
| Customer_ID |
| Address |
| Date |
-----------------
_________________
|Invoices |
|-----------------|
| *Job_ID |**
| Subtotal |
| TaxPercent |
| Total |**
| DateSent |**
| DateDue |**
| DatePaid |**
-----------------
在上表中,(**)是指需要檢索的數據。我相信我下面附加的查詢應該可以工作,但執行後,我得到一個錯誤消息:java.sql.SQLSyntaxErrorException:語法錯誤:遇到「IN」;
如果有人可以幫幫忙,謝謝!
SELECT Customer_ID,
, Job_ID
, LastName
, FirstName
, Total
, DateSent
, DateDue
, DatePaid
FROM Invoices
, Customers
WHERE Customer_ID in (
SELECT Customer_ID
FROM Jobs
WHERE Jobs.Job_ID in (
SELECT Job_ID
FROM Invoices
)
)
更新:我切換到使用MySQL的應用程序,看看是否可以解決問題;它沒。我能夠得到以下查詢在MySQL中運行,但是當我從Java執行查詢時仍然收到錯誤。
SELECT Customers.Customer_ID
,Jobs.Job_ID
,LastName
,FirstName
,Total
,DateSent
,DateDue
,DatePaid
FROM Jobs INNER JOIN Customers on Customers.Customer_ID = Jobs.Customer_ID
INNER JOIN Invoices on Jobs.Job_ID = Invoices.Job_ID;
查詢在MySQL中運行而不是在Java中運行的原因是什麼?也可以在不使用INNER JOIN或IN的情況下從多個表中選擇數據。
UPDATE2: 我認爲我犯了一個愚蠢的錯誤,沒有在關鍵字和標識符之間留出空格。謝謝您的幫助!
爲什麼你使用'IN'做加盟JOIN使用代替(它更快,在許多情況下)?爲什麼不直接使用連接? –
停止這個。閱讀關於連接。 – Strawberry
我只有一類SQL,已經過去了一年多。我正在重新學習,而且確實需要刷新連接。 – JGray