2016-12-07 19 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 

ユーザーがtrx_batchのIDとして1を入力した場合。合計は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

普通のヤール、なぜあなたは家の仕事をしていますか?彼はtryleleを試してみましょう –

+0

これは私が助けを求めている理由です。@ un-luckyなぜあなたは私を裁くのですか?私は決して試していないことをどのように知っていますか – chonglt

+0

私は間違った部分があることを知っています。ありがとうございます@Dai – chonglt

関連する問題