INNER JOIN 嵌套 SQL

问题描述 投票:0回答:3

为什么我无法在以下数据库中进行此查询:W3学校数据库(表格列在右侧)

SELECT Customers.CustomerName,
       OrderDetails.ProductID
FROM   Customers
       INNER JOIN Orders
         ON Customers.CustomerID = Orders.CustomerID
       INNER JOIN OrderDetails
         ON Orders.OrderID = OrderDetails.OrderID 

我正在尝试查看客户订购的产品 ID。上面的查询应该将客户与订单进行匹配,然后获取这些订单 ID 并找到正确的 OrderDetails 以输出包含 CustomerName 和 ProductID 的表。

我收到以下错误:

查询表达式“Customers.CustomerID = Orders.CustomerID INNER JOIN OrderDetails ON Orders.OrderID = OrderDetails.OrderID”中存在语法错误(缺少运算符)。

提前致谢。

sql join inner-join
3个回答
1
投票

这是 Access 数据库吗?如果是这样,当有多个 JOIN 时,您需要括号:

SELECT Customers.CustomerName,
   OrderDetails.ProductID
FROM   (Customers
   INNER JOIN Orders
     ON Customers.CustomerID = Orders.CustomerID)
   INNER JOIN OrderDetails
     ON Orders.OrderID = OrderDetails.OrderID

0
投票

在 Chrome 中工作正常,但在 Firefox 中失败。

原因是 w3c 页面在浏览器的 WebSQL 引擎中运行 SQL 查询,以免服务器过载。对于不支持 WebSQL 的浏览器,它求助于 ASP WS,它在远程访问数据库上运行查询。

这就是为什么在 Firefox 中每个连接都需要括号 a là Access,但在 Chrome 或任何其他支持 websql 的浏览器中则不需要它们。


0
投票

尝试使用如下括号...假设如果您想再添加一个表,语法将如下所示

SELECT Customers.CustomerId, Orders.OrderId 
FROM  (((Customers 
Inner JOIN Orders ON Customers.CustomerId = Orders.CustomerId)
Inner JOIN OrderDetails ON Orders.OrderId = OrderDetails.OrderId)
Inner Join Products ON Products.ProductId = OrderDetails.productId);
© www.soinside.com 2019 - 2024. All rights reserved.