我的工作我的高级项目,我们使用的是嵌入式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