2016-02-12 80 views

回答

1

這兩個表中的每個uid都有多行。因此,對於uid,您將得到一個笛卡爾積 - 一個表中的2行用於uid,另一個表中的3行成爲6行,並有大量重複的數據。

SO,這樣在連接前彙總數據:

select s.uid, sumscore, sumorder 
from (select s.uid, sum(s.score) as sumscore 
     from scores s 
     group by s.uid 
    ) s left join 
    (select o.uid, sum(o.order) sumorder 
     from orders o 
     group by o.uid 
    ) o 
    on o.uid = s.uid; 

Here是在一個SQL小提琴的結果。

+0

這是一件好事,所以+1。 –

+0

太棒了!我爲我完美工作。再次感謝。 – Henioryb

0

您可能正在尋找。試試這個,讓我知道它是否對你有幫助。

SELECT s.uid, SUM(s.score) as score_tot, (SELECT SUM(orders.order) FROM orders WHERE orders.uid = s.uid GROUP BY orders.uid) as order_tot FROM scores as s GROUP BY s.uid 

sqlfiddle這裏