【发布时间】:2017-03-08 22:29:01
【问题描述】:
我正在处理我的高级项目,我们正在使用嵌入式 Apache Derby 数据库。我正在尝试从下面的三个表中查询数据,但遇到了麻烦。
_________________
|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: Syntax error: Encountered "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 的情况下从多个表中选择数据也可以正常工作。
更新2: 我相信我犯了一个愚蠢的错误,并且没有在关键字和标识符之间留下空格。感谢您的帮助!
【问题讨论】:
-
你为什么要使用
IN来加入?为什么不直接使用连接? -
停止这个。阅读有关联接的信息。
-
我只有一个级别的 SQL,而且已经一年多了。我正在重新学习,确实需要重新学习。
-
而且,除了卖淫之外,工作和客户是一回事,这很荒谬
-
@strawberry 的工作和客户是不同的……你是什么意思?