2013-06-11 19 views
0

我有什么条款:
我有两个表,第一个是user_faktorha保存发票数据和第二被u_payment保存支付数据。的MySQL集团两个栏与地方两个两组

我想要什么:
我想一群来自这两表中的所有数据,并有一个结果作为一个桌子和两个表。
我的两个表样本查询的是sqlfiddle:http://sqlfiddle.com/#!2/b9f9e/4

有什么问题:
我试图解决这个问题,但每次给出错误的结果,例如(可以看到sqlfiddle)用户/告诉给出错误的总和(价格)结果命名为habib

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

有什么解决办法?

+0

仅在u_payment表的SQLFiddle中,您将选择的行限制为那些WHERE Active ='1'',但在您的主查询中,您已忽略此限制 - 是否希望主查询将此限制包含在u_payment记录呢? –

+0

是的,必须包含在主查询中。但我不知道该怎么做:),把它留在主体上。 – Root125

回答

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 here

+0

感谢马克,但付款价格错误的结果,请参阅:http://sqlfiddle.com/#!2/b9f9e/17 – Root125

+0

@root:请参阅我的更新答案。 –

+0

谢谢马克,现在工作成功。但是如果可能的话:主要查询必须有总和“Faktorhaprice”和“Paymentprice”作为一列的总价格以及总额的顺序是什么? – Root125

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