Синтаксические ошибки при объединении 3 таблиц - PullRequest
0 голосов
/ 16 апреля 2009

Я пытаюсь объединить 3 таблицы с помощью следующего оператора SQL

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_table.OrderID = order_table.orderid оставил внешнее соединение item_table для item_table.itemID = orderDetail_table.itemID'."

Любая помощь будет оценена. Спасибо

Я хочу, чтобы он всегда возвращал сумму orderDetail_table.price * orderDetail_table.quantity, возможно, не существует item_table.GLAcct для orderDEtail_table.ItemID

Ответы [ 2 ]

0 голосов
/ 16 апреля 2009

Попробуйте скобки:

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
0 голосов
/ 16 апреля 2009

Поскольку таблица OrderDetail всегда является частью Order, и каждая деталь всегда ссылается на Item, вы можете заменить LEFT OUTER JOIN на INNER JOIN. Тем более, что оба предложения WHERE и GROUP BY ссылаются на необязательные таблицы.

Что именно такое сообщение об ошибке?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...