【问题标题】:MYSQL inner join 2 tables and sum()MYSQL 内连接 2 个表和 sum()
【发布时间】:2013-04-23 11:59:37
【问题描述】:

加入 2 个表后,我无法获取 sum(),其中一个是 HEADER AND DETAIL。它只为下面的 sql 语句提供 0 结果。需要帮助:

我的桌子:

INVHDR:

    Invno,  Invdate,   Ac_code
    100     2013-04-01  2
    101     2013-04-30  2

    INVDTLS:
    Invno,  Prod_desc, Amount
    100     Argon      155
    100     Argon      250
    101     Oxygen     322
    101     Oxygen     065

期望的结果: amts 总和:405

MYSQL 语句内连接和 sum()

SELECT
        a.Invno, a.Ac_code, a.Invdate, b.*
    FROM INVHDR a
    INNER JOIN (
        SELECT
                Invno, Prod_desc, SUM( Amount ) AS amts
            FROM INVDTLS
            WHERE Prod_desc='Argon'
        ) AS b ON a.Invno = b.Invno
    WHERE
        a.Ac_code='2'
        AND a.Invdate BETWEEN '2013-04-01'
        AND '2013-04-30'
    GROUP BY a.Ac_code

【问题讨论】:

标签: mysql sum inner-join


【解决方案1】:

你为什么要写这么复杂Query,试试这个:

SELECT sum(b.Amount)
FROM INVHDR a 
INNER JOIN INVDTLS b
ON a.Invno = b.Invno 
WHERE a.Ac_code='2' 
AND a.Invdate BETWEEN '2013-04-01' AND '2013-04-30' 
AND b.Prod_desc='Argon'
--Group by b.Prod_desc,a.Invno, a.Ac_code

这里是SQL Fiddle

【讨论】:

  • 出现错误:#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“FROM INVHDR a INNER JOIN INVDTLS b ON a.Invno = b.Invno WHERE a.Ac_code='2' AND ”附近使用正确的语法
  • @RaphaëlAlthaus 请看看 Fiddle。 :)
  • 当我有多个相同产品 Argon 的发票编号,例如 102、Argon、200。它给出的结果是 2 个结果,405 和 200。如何解决这个问题,我想要总共 605
【解决方案2】:

检查http://www.sqlfiddle.com/#!2/86377/8谢谢@Luv

SELECT 
    a.Invno, a.Ac_code, b.Prod_desc, SUM(b.Amount) AS Amount
FROM INVHDR a 
INNER JOIN INVDTLS b ON a.Invno = b.Invno 
WHERE 
    a.Ac_code = 2 -- a.Ac_code='2'
    AND a.Invdate BETWEEN '2013-04-01' AND '2013-04-30' 
    AND b.Prod_desc='Argon'
group by a.Invno, a.Ac_code, b.Prod_desc

【讨论】:

  • 有一个 sum(amount) 结果但它不是正确的数字,而不是 405,它给出了 700
  • 根据需要设置组,即根据需要自定义查询
  • @AndaIancu 没有。请不要给出错误的答案并说“自定义它以使其工作”。
猜你喜欢
  • 2013-04-02
  • 1970-01-01
  • 1970-01-01
  • 2012-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
  • 2013-05-18
相关资源
最近更新 更多