2010-09-25 84 views
0

我有一個叫這種結構導致表:MySQL的加入與總

resultid,冠軍,類型

而與此結構的表稱爲門票:

resultid,ticketid,賭,sum_won ,狀態

而且我想告訴從表中結果每行和每一個結果,我想totalBet和Sum_won使用從表票值來計算

我試圖做一些連接,一些總和,但我不能得到我想要的。

SELECT *,COALESCE(SUM(tickets.bet),0) AS totalbets, 
     COALESCE(SUM(tickets.sum_won),0) AS totalwins 
FROM `results` NATURAL JOIN `tickets` 
WHERE tickets.status<>0 
GROUP BY resultid 

請給我一些建議。

我想這樣

RESULT WINNER TOTALBETS TOTALWINS 
1  2  431  222 
2  3   0   0 
3  1   23  0 
4  1   324  111 
+0

您能舉出一些示例數據和該數據的預期結果嗎?我認爲這會讓你的問題更清楚。 – 2010-09-25 19:04:45

+0

它也可能有助於發佈'show create table results \ G'和'show create table tickets \ G'。什麼是'raceid'? – unutbu 2010-09-25 19:08:36

+0

我的意思是resultid ... – NVG 2010-09-25 19:12:07

回答

1

使用顯示的東西:

SELECT r.*, 
      COALESCE(x.totalbet, 0) AS totalbet, 
      COALESCE(x.totalwins, 0) AS totalwins 
    FROM RESULTS r 
LEFT JOIN (SELECT t.resultid, 
        SUM(t.bet) AS totalbet, 
        SUM(t.sum_won) AS totalwins 
      FROM TICKETS t 
      WHERE t.status != 0 
     GROUP BY t.resultid) x ON x.resultid = r.resultid 

我不關心自然連接語法,寧願要明確瞭解如何加入/鏈接表一起。

+0

非常感謝!像魅力一樣工作! – NVG 2010-09-25 19:28:43

0
SELECT *, COALESCE(SUM(tickets.bet),0) AS totalbets, 
     COALESCE(SUM(tickets.sum_won),0) AS totalwins 
FROM `results` NATURAL JOIN `tickets` 
WHERE tickets.status<>0 
GROUP BY resultid 

嘗試與resultid替換第一個*。如果這有幫助,則將更多列添加到SELECT,並將它們同時添加到GROUP BY

+0

does not work ...如果我沒有任何門票播放的那個resultid,那麼它不會返回0 – NVG 2010-09-25 19:23:40