2013-07-05 2 views
-1

мне нужно создать JOIN синтаксис для этого запроса в MySQL:SUM для Multiple таблицы и ребенка Таблица

SELECT 
    TblSupplier.SupplierName AS SupplierName, 
    (SUM(TblBuy.TotalBuy) - SUM(TblReturn.TotalReturn)) AS Total 
    (SUM(TblPayment.TotalPaymentToday) - SUM(TblReturnItem.TotalReturnToday)) AS TotalPayment, 
    ((SUM(TblBuy.TotalBuy) - SUM(TblReturn.TotalReturn)) - (SUM(TblPayment.TotalPaymentToday) - SUM(TblReturnItem.TotalReturnToday))) AS Balance 
FROM ... 
GROUP BY TblSupplier.ID 

, но я не знаю, как это сделать ...

This is my ER Diagram

Пример мой вопрос:

INSERT INTO TableSupplier (ID, SupplierName) VALUES (1, 'Компания A'), (2, 'Компания B');

INSERT INTO TableBuy (ID, SupplierID, TotalBuy) ЗНАЧЕНИЯ (1, 1, 100), (2, 1, 200), (3, 2, 50), (4, 2, 100) , (5, 2, 50);

INSERT INTO TablePayment (ID, BuyID, TotalPaymentToday) ЗНАЧЕНИЯ (1, 1, 50), (2, 3, 50);

INSERT INTO TableReturn (ID, SupplierID, TotalReturn) ЗНАЧЕНИЯ (1, 1, 20), (2, 2, 30), (3, 2, 10);

INSERT INTO TableReturnItem (ID, ReturnID, TotalReturnToday) ЗНАЧЕНИЯ (1, 1, 10), (2, 2, 30);

Я следовать этому примеру, я получил этот результат:

MySQL> выберите
-> ts.SupplierName AS SupplierName,
-> (SUM (tb.TotalBuy) - SUM (тр .TotalReturn)) AS Total,
-> (СУММА (tp.TotalPaymentToday) - SUM (tri.TotalReturnToday)) AS TotalPayment,
-> ((SUM (tb.TotalBuy) - SUM (tr.TotalReturn)) -
-> (SUM (tp.TotalPaymentToday) - SUM (tri.TotalReturnToday))) AS Баланс
-> от tablesupplier т.с.
-> внутреннее соединение tablebuy Тб на ts.id = tb.id
-> внутреннее соединение tablereturn тр на ts.id = tr.id
-> внутреннее соединение tablepayment TP на TS. id = tp.id
-> внутреннее соединение tablereturnitem tri on ts.id = tri.id
-> group by ts.Я бы;

SupplierName | Всего | TotalPayment | Баланс
----------------------------------------------- -
Компания A | 80 | 40 | 40
Компания B | 170 | 20 | 150

Результат я хочу это:

SupplierName | Всего | TotalPayment | Баланс
----------------------------------------------- -
Компания A | 280 | 40 | 240
Компания B | 160 | 20 | 140

+0

и что не работает? –

+0

да, я не знаю, как создать синтаксис соединения для этого запроса, значение (результат) будет повторяться –

+0

Можете ли вы опубликовать то, что вы пробовали? –

ответ

0

попробовать это:

select 
ts.SupplierName AS SupplierName, 
(SUM(tb.TotalBuy) - SUM(tr.TotalReturn)) AS Total 
(SUM(tp.TotalPaymentToday) - SUM(tri.TotalReturnToday)) AS TotalPayment, 
((SUM(tb.TotalBuy) - SUM(tr.TotalReturn)) - 
(SUM(tp.TotalPaymentToday) -  SUM(tri.TotalReturnToday))) AS Balance 
from tablesupplier ts 
inner join tablebuy tb on ts.id=tb.supplierid 
inner join tablereturn tr on ts.id=tr.supplierid 
inner join tablepayment tp on tb.id=tp.buyid 
inner join tablereturnitem tri on tr.id=tri.returnid 
group by ts.id 
+0

привет, даниэль, спасибо за ответ на мой вопрос, но ответ по-прежнему не прав, см. Мое последнее изменение в моем вопросе для объяснения –

+0

@RahmatPriyanto проверить мое редактирование ... –

+0

извините, если мой английский плохой, я от индонезийского –

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