在三个表的内连接中由另一列分组的两列相乘的总和返回错误的值

时间:2018-02-24 20:23:05

标签: php mysql sql database

在三个表的内连接中由另一列分组的两列相乘的总和返回错误的值。 以下是我的三张桌子:

表1: enter image description here

表2:

enter image description here

表3:

enter image description here

我的查询如下:

SELECT c.price, c.quantity, SUM( c.quantity * c.price ) AS price, 
group_concat( a.rate
SEPARATOR '<br>' ) AS rates, c.hsn AS hsn
FROM tax_wa a
INNER JOIN tax_rate_class b ON a.tax_rate_id = b.tax_rate_id
INNER JOIN inv_item c ON b.tax_class_id = c.tax_class_id
WHERE c.invoice_id = '17'
GROUP BY c.hsn

结果是:

enter image description here

但是上面的一个是不正确的...为了表明它,如果你在inv_item表上运行以下查询(单独,没有连接),你得到正确的结果:

SELECT price, quantity, sum( quantity * price )
FROM `inv_item`
WHERE invoice_id = '17'
GROUP BY hsn

结果很好:

enter image description here

以上结果计算出错误的值 如果你添加所有

1 个答案:

答案 0 :(得分:1)

据推测,您需要sum()

SELECT SUM(c.price),  SUM(c.quantity), SUM( c.quantity * c.price ) AS price, 
       group_concat( a.rate SEPARATOR '<br>' ) AS rates, c.hsn AS hsn
FROM tax_wa a INNER JOIN
     tax_rate_class b
     ON a.tax_rate_id = b.tax_rate_id INNER JOIN
     inv_item c
     ON b.tax_class_id = c.tax_class_id
WHERE c.invoice_id = 17
GROUP BY c.hsn;