2016-12-07 108 views
0

我有3个表(trx_batch,trx_doc_trx_item)。 我想让用户输入id(trx_batch)。然后系统会自动计算链接到trx_doc的trx_item和trx_doc链接到trx_batch的总和。计算在MYSQL中交叉3个表的总和

我的表:我有

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作为ID为trx_batch。总数应该是650.00。 如何写入mysql格式?请帮助我谢谢!

回答

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 
+1

常见的亚里,你为什么要做他的家庭作品?让他试试至少 –

+0

已经尝试过,这就是为什么我寻求帮助.. @不幸的你为什么判断我?你怎么知道我从来没有尝试过? – chonglt

+0

现在我知道哪个部分出了问题。非常感谢你@戴 – chonglt