2013-06-11 22 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