2012-02-12 4 views
0

В моем запросе ниже я пытаюсь присоединиться к одному набору результатов к другому с помощью идентификатора customerNumber. Я хочу найти заказанную сумму каждого клиента и оплаченную сумму. SQL не выполняется без помощи Клиента NavicatMysql JOIN два вложенных запроса

SELECT DISTINCT tabl1.customerNumber, 
       tabl1.amountOrdered, tabl2.amountPaid 
FROM 
(
    SELECT Distinct c.customerNumber, o.orderNumber, 
      SUM(od.quantityOrdered * od.priceEach) amountOrdered 
    FROM ClassicModels.Customers c 
    INNER JOIN ClassicModels.Orders o 
       ON c.customerNumber = o.customerNumber 
    INNER JOIN ClassicModels.OrderDetails od 
       ON o.orderNumber = od.orderNumber 
    GROUP BY od.orderNumber 
    ORDER BY c.customerNumber 
) tabl1 
INNER JOIN 
(
    SELECT DISTINCT c.customerNumber, p.amount amountPaid 
    FROM ClassicModels.Customers c 
    INNER JOIN ClassicModels.Payments p 
       ON c.customerNumber = p.customerNumber 
) tabl2 ON tabl1.customerNumber = tabl2.customerNumber 
+0

'ORDER BY' не может быть часть подзапроса w/out 'LIMIT' –

ответ

1

Если вы хотите, чтобы выбрать количество каждого клиента заказано и уплаченная сумма, это гораздо проще, запрос должен работать:

SELECT o.customerNumber as customerNumber, 
    SUM(od.quantityOrdered * od.priceEach) as amountOrdered, 
    SUM(p.amount) as amountPaid 
FROM ClassicModels.Orders o 
INNER JOIN ClassicModels.OrderDetails od 
    ON o.OrderNumber = od.OrderNumber 
LEFT JOIN ClassicModels.Payments p 
    ON p.customerNumber = o.customerNumber 
GROUP BY o.customerNumber 
+0

Но я хочу также включить всех клиентов, которые заказали, но не оплатили. поэтому amountOrdered также должен также показывать записи, где номер клиента не находится в таблице платежей. Как добавить это к предлагаемому запросу – Warz

+0

В таблице заказа нет заказанного количества, его OrderDetails, который имеет эту информацию. Поэтому необходимо также внутреннее соединение между этими двумя таблицами. – Warz

+0

затем левый член команды shoild. Можете ли вы проверить мой обновленный ответ? –

Смежные вопросы