Order_ID可以引用SQL语句的FROM子句中的多个表

时间:2018-03-16 03:31:37

标签: sql ms-access

错误消息

  

Order_ID可以引用SQL语句的FROM子句中的多个表

SELECT Customer_ID, o.Order_ID, o.Order_Date, p.Product_Description, p.Product_Finish 
FROM Order_T AS o, Order_Line_T AS ol, Product_T AS p
WHERE o.Order_ID=ol.Order_ID
AND ol.Product_ID = p.Product_ID
AND ol.Ordered_Quantity > 3
ORDER BY Order_ID;

我一直收到一条错误,说明Order_ID可以引用SQL语句的FROM子句中的多个表,有人可以帮我这个我不知道什么是错的。

2 个答案:

答案 0 :(得分:1)

bearname

查看上面的查询,您可以看到2个表中至少有两列FROM Order_T AS o, Order_Line_T AS ol, Product_T AS p WHERE o.Order_ID=ol.Order_ID ....

  • o.Order_ID
  • ol.Order_ID

此子句Order_ID中还有Order_ID列没有别名。数据库不知道这里应该使用哪个order_id列 - o.Order_ID或ol.Order_ID,并报告错误。

只需在order by子句中使用别名:ORDER BY Order_ID;,这应该可以解决问题。

答案 1 :(得分:0)

您错过了JOIN

虽然可以接受WHERE条款,但在访问中首选使用ON关键字。

此外,Access需要在同一语句中围绕多个联接使用括号。

尝试:

FROM (Order_T AS o INNER JOIN Order_Line_T AS ol ON o.Order_ID=ol.Order_ID) 
INNER JOIN Product_T AS p ON ol.Product_ID = p.Product_ID
WHERE ol.Ordered_Quantity > 3
ORDER BY o.Order_ID;