计算在MYSQL中跨越3个表的总和

时间:2016-12-07 06:05:00

标签: mysql count sum

我有3个表(trx_batch,trx_doc_trx_item)。 我希望用户输入id(trx_batch)。然后系统将自动计算链接到trx_doc的trx_item的总和,并且trx_doc链接到trx_batch。

我的表:

CREATE TABLE IF NOT EXISTS `trx_batch` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `batchDate` date NOT NULL,
  `status` varchar(1) NOT NULL
  PRIMARY KEY (`id`)
);

CREATE TABLE IF NOT EXISTS `trx_doc` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `idBatch` int(11) NOT NULL,
  `subject` varchar(200) DEFAULT NULL,
  `status` varchar(1) NOT NULL DEFAULT 'A',
  PRIMARY KEY (`id`)
);

CREATE TABLE IF NOT EXISTS `trx_item` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `idDoc` int(11) NOT NULL,
  `amount` decimal(14,4) NOT NULL,
  `amtTax` decimal(12,4) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

我拥有的示例数据:     trx_batch    id:1

trx_doc
id:1
idBatch: 1

trx_item:
id:1
idDoc:1
amount: 500
amtTax : 30

id:2
idDoc:1
amount:100
amtTax:20

如果用户输入1作为trx_batch的id。总数应为650.00。 如何用mysql格式编写?请帮助我谢谢!

1 个答案:

答案 0 :(得分:0)

SELECT
    SUM( COALESCE( i.amount, 0 ) + COALESCE( i.amtTax, 0 ) ) AS SumAmountAndTax
FROM
    trx_item AS i
    INNER JOIN trx_doc   AS d ON i.idDoc   = doc.id
    INNER JOIN trx_batch AS b ON d.idBatch = b.id
WHERE
    b.id = :batchIdParameterValue