0

この構造の RESULTS というテーブルがあります。

結果ID、勝者、タイプ

そして、この構造を持つ TICKETS というテーブル:

resultid,ticketid,bet,sum_won,status

そして、テーブル RESULTS の各行を表示し、各結果について、テーブル TICKETS の値を使用して 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
4

2 に答える 2

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

NATURAL JOIN構文は気にせず、テーブルをJOIN/リンクする方法を明示することを好みます。

于 2010-09-25T19:14:20.617 に答える
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

于 2010-09-25T19:17:46.677 に答える