【问题标题】:MYSQL to group tables and apply aggregate subtractionMYSQL 对表进行分组并应用聚合减法
【发布时间】:2017-12-03 16:32:30
【问题描述】:

tablo1
------------------------------------ --
firma----------alacak
Firma1---- ---------------500
公司1-------300
公司1------ -------------700
公司2-------400
公司2-------- ------------200


tablo2
------------------------------------ --
firma----------tahsilat
Firma1---- ---------------300
公司1-------200
公司2------ -------------100

我有 2 张桌子。我想对表 1 和表 2 中的“firma”进行分组和聚合。我想得到结果。

("tablo1" Firma1 -> 1500) - ("tablo2" Firma1 -> 500) = 1200
("tablo1" Firma2 -> 600) - ("tablo2" Firma2 -> 100) = 500

我要打印的结果:
firma强>---------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”

标签: php mysql sorting addition subtraction


【解决方案1】:

您的代码将适用于正确的join 条件:

ON tablo1.firma = tablo2.firma

但是,在 MySQL 中,我更喜欢使用 union allgroup 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”
  • 这方面我需要你的帮助。
  • @vduvencioglu 。 . .我不明白这将如何返回 0。
  • 我这样写时无法得到结果 SELECT Firma, SUM(alacak) FORM ((SELECT Firma, alacak AS result FORM tablo1 ) UNION ALL (SELECT Firma, - tahsilat FORM tablo2 ) 开tablo1.firma = tablo2.firma GROUP BY Firma;
  • @vduvencioglu 。 . .我的回答中没有ON 子句。
猜你喜欢
  • 2017-09-19
  • 1970-01-01
  • 1970-01-01
  • 2018-03-19
  • 2020-11-09
  • 2017-02-14
  • 2016-05-07
  • 2020-11-16
  • 2021-10-06
相关资源
最近更新 更多