2016-12-07 1 views
0

У меня есть 3 таблицы (trx_batch, trx_doc_trx_item). Я хочу, чтобы пользователь вводил идентификатор (trx_batch). Затем система автоматически вычислит сумму trx_item, которая связана с trx_doc, а trx_doc связана с trx_batch.Вычислить сумму, которая пересекает 3 таблицы в MYSQL

Мой стол:

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`) 
); 

Sample данные, которые у меня есть: 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. Сумма должна составлять 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

Обычный ярд, почему вы делаете его дома? Дайте ему попробовать atleast –

+0

уже пробовали, поэтому я ищу помощь .. @ неудобно, почему вы судите меня? Откуда вы знаете, что я никогда не пытаюсь? – chonglt

+0

Теперь я знаю, какая часть пошла не так .. Большое спасибо @Dai – chonglt

Смежные вопросы