0

我有什么:
我有两个表,第一个是user_faktorha保存发票数据,第二个是u_payment保存付款数据。

我想要什么:
我想将这两个表中的所有数据分组,并将结果作为一个表与两个表相加。
我的两个带有示例查询的表在 sqlfiddle 上: http ://sqlfiddle.com/#!2/b9f9e/4

有什么问题:
我尝试解决这个问题,但每次都给出错误的结果,例如(可以在 sqlfiddle 上看到),user/tell 命名为habibon 给出错误的 sum(price) 结果。

habib's faktorhaprice = -508261 and habib's paymentprice = 648000但是主查询中的总和结果有错误的数据-7115654 and 13000000

有什么解决办法?

4

2 回答 2

1

(更新)一种方式:

SELECT tell,SUM(FAKTORHAPRICE) FAKTORHAPRICE, SUM(PaymentPrice) PaymentPrice 
FROM (SELECT tell, price as FAKTORHAPRICE, null PaymentPrice
      from user_faktorha
      union all
      SELECT Username as tell, null as FAKTORHAPRICE, Price as PaymentPrice
      FROM `u_payment` WHERE Active='1') sq 
GROUP BY tell ORDER BY FAKTORHAPRICE ASC;

SQLFiddle在这里

于 2013-06-11T17:40:14.357 回答
0

您的问题的本质是您试图与不相关的表相关联。当然,它们在用户名中有共同的数据,但它们之间没有清晰的关系,例如可用于将项目关联在一起的发票 ID,这样 OUTER JOIN 就不会重复结果集中的记录。我的建议是单独对每个表进行聚合,然后像这样加入结果:

SELECT f.tell, f.faktorhaprice, p.paymentprice
FROM
    (SELECT tell, SUM(price) AS faktorhaprice FROM user_faktorha GROUP BY tell) AS f
INNER JOIN
    (SELECT username, SUM(price) AS paymentprice FROM u_payment GROUP BY username) AS p
ON f.tell = p.username
于 2013-06-11T17:38:28.110 回答