Mysql ПРИСОЕДИНЯЙТЕСЬ к двум вложенным запросам - PullRequest
0 голосов
/ 12 февраля 2012

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

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

1 Ответ

1 голос
/ 12 февраля 2012

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

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
...