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
Ваш код будет работать с правом 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;
Это работает, даже если записи находятся только в одной таблице, независимо от таблицы, в которой они находятся.
Других решений пока нет …