MYSQL для группировки таблиц и применения совокупного вычитания

tablo1
—————————————
фирма———————alacak
Firma1 ——————- 500
Firma1 ——————- 300
Firma1 ——————- 700
Firma2 ——————- 400
Firma2 ——————- 200


tablo2
—————————————
фирма———————tahsilat
Firma1 ——————- 300
Firma1 ——————- 200
Firma2 ——————- 100

У меня есть 2 таблицы. Я хочу сгруппировать и объединить «фирму» в таблице 1 и таблице 2. Я хочу получить результаты.

(«tablo1» Firma1 -> 1500) — («tablo2» Firma1 -> 500) = 1200
(«tablo1» Firma2 -> 600) — («tablo2» Firma2 -> 100) = 500

Результат, который я хочу напечатать:
фирма———alacak
Firma1 ——- 1200
Firma2 ——- 500

Я попробовал код, подобный этому:

SELECT tablo1.firma,
(COALESCE(tablo1.alacak) - COALESCE(tablo2.tahsilat)) AS sonuc
FROM (SELECT firma, SUM(alacak) AS alacak
FROM tablo1
GROUP BY firma
) AS tablo1 LEFT JOIN
(SELECT firma, SUM(tahsilat) AS tahsilat
FROM tablo2
GROUP BY firma
) AS tablo2
ON tablo1.firma = tablo2.tahsilat
ORDER BY tablo1.firma ASC

0

Решение

Ваш код будет работать с правом join состояние:

ON tablo1.firma = tablo2.firma

Однако в MySQL я предпочитаю использовать union all а также group by:

select firma, sum(amount)
from ((select firma, alacak as amount
from tablo1
) union all
(select firma, - tahsilat
from tablo2
)
) tt
group by firma;

Это работает, даже если записи находятся только в одной таблице, независимо от таблицы, в которой они находятся.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector