Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 连接3个表时出现语法错误_Sql_Ms Access - Fatal编程技术网

Sql 连接3个表时出现语法错误

Sql 连接3个表时出现语法错误,sql,ms-access,Sql,Ms Access,我试图用下面的sql语句连接3个表 Select Sum(OrderDetail_table.Price * orderDetail_table.quantity) as totalPrice, item_table.GLacct from OrderDetail_table left outer join order_table on orderDetail_table.orderID = order_table.orderid

我试图用下面的sql语句连接3个表

Select 
    Sum(OrderDetail_table.Price * orderDetail_table.quantity) as totalPrice,
    item_table.GLacct 
from 
    OrderDetail_table 
    left outer join order_table on 
        orderDetail_table.orderID = order_table.orderid 
    left outer join item_table on 
        item_table.itemID = orderDetail_table.itemID 
where 
    Order_table.invoiceDate = #01/31/2009# 
group by 
    item_table.glacct
我收到的错误消息是:

语法错误查询表达式“orderDetail\u table.OrderID=order\u table.OrderID左侧外部联接项\u table on item\u table.itemID=orderDetail\u table.itemID”中缺少运算符

任何帮助都将不胜感激。谢谢


我希望它始终返回orderDetail_table.price*orderDetail_table.quantity的总和,orderDetail_table可能没有item_table.GLAcct。ItemID

由于orderDetail表始终是订单的一部分,并且每个细节始终引用一个项目,因此可以用内部联接替换左侧外部联接。特别是,因为WHERE和GROUPBY子句都引用可选表

错误消息是什么?

请尝试括号:

Select
    Sum(OrderDetail_table.Price * orderDetail_table.quantity) as totalPrice,
    item_table.GLacct 
from
     (OrderDetail_table
     left outer join order_table on
         orderDetail_table.orderID = order_table.orderid)
     left outer join item_table on
         item_table.itemID = orderDetail_table.itemID
where
     Order_table.invoiceDate = #01/31/2009#
group by
     item_table.glacct

你能为我们在代码中插入一些换行符吗?错误消息可能也会有帮助。如果你使用QBE网格在Access中构建SQL,你会得到保证工作的连接。Jet SQL不使用外部,只使用左或右,但当它在其中时不会阻塞。只有当你用手写的时候,你才会遇到这样的难题。旁观者之眼:我认为ACE/Jet SQL确实使用了OUTER,但当它被省略时,它不会阻塞。有趣的是,这里有一个奇怪的例子,说明ACE/Jet没有被错误的关键字david_w_fenton阻塞,而它应该:选择O1.OrderID,david_w_fenton选择COUNT*FROM[Order Details]作为OD1,其中O1.OrderID=OD1.OrderID来自作为O1的订单;