gpt4 book ai didi

java - “IN”和 'INNER JOIN' 关键字不适用于数据库

转载 作者:行者123 更新时间:2023-11-29 07:03:03 24 4
gpt4 key购买 nike

我正在从事我的高级项目,我们正在使用嵌入式 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:语法错误:遇到“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: 我相信我犯了一个愚蠢的错误,没有在关键字和标识符之间留下空格。感谢您的帮助!

最佳答案

我没有发现您的查询有任何问题,您可以使用 JOIN 而不是 IN(在许多情况下它更快)

SELECT j.Customer_ID,j.Job_ID,LastName,FirstName,Total, DateSent, DateDue,DatePaid
FROM Jobs as j inner join Customers as c on c.Curstomer_ID = j.CustomerID
inner join Invoices as i on j.Job_ID = i.Job_ID

关于java - “IN”和 'INNER JOIN' 关键字不适用于数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42683126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com