gpt4 book ai didi

mysql - JDBC mySQL DML 错误

转载 作者:行者123 更新时间:2023-11-29 00:29:26 25 4
gpt4 key购买 nike

我正在尝试使用 JOIN TABLE QUERY 显示为客户完成的工作的所有相关信息。

这是我的代码...

SELECT Bill.BillID, Duty.TaskTime 
FROM Invoice
LEFT OUTER JOIN Duty.JobID = Bill.JobID
WHERE Job.CustomerID = Customer.CustomerID

我一直收到这个错误...'#1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本对应的手册,了解在第 3 行的“.JobID WHERE Job.CustomerID = Customers.CustomerID”附近使用的正确语法

最佳答案

问题是您正在尝试访问您尚未在 WHERESELECT 子句中告知查询的表。当您在 SELECT 子句中说 Bill.BillID 时,您是说您想要来自名为 Bill 的表的字段 BillID

您的语法违反的规则是您不能在 SELECTWHERE 子句中使用表名,除非您在 >FROM 子句(或 JOIN)。

现在,让我们看看您的查询。

SELECT Bill.BillID, Duty.TaskTime 
FROM Invoice
LEFT OUTER JOIN Duty.JobID = Bill.JobID
WHERE Job.CustomerID = Customer.CustomerID

这意味着您要从名为 BillDuty 的表中选取字段,并根据 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 子句中引用的 JobCustomer 表。为了使用它们,您还需要 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 .祝你好运~

关于mysql - JDBC mySQL DML 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17327621/

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