MySql 使用 Sum 连接

发布于 2024-09-24 21:38:00 字数 683 浏览 7 评论 0原文

我有一个名为 RESULTS 的表,其结构为:

resultid,winner,type

和一个名为 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

I have a table called RESULTS with this structure :

resultid,winner,type

And a table called TICKETS with this structure :

resultid,ticketid,bet,sum_won,status

And I want to show each row from table RESULTS and for each result I want to calculate the totalBet and Sum_won using the values from table TICKETS

I tried to make some joins,some sums,but I cant get what I want.

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

Please give me some advice.

I want to display something like this

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

囍笑 2024-10-01 21:38:00

使用:

   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/链接在一起。

Use:

   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

I don't care for the NATURAL JOIN syntax, preferring to be explicit about how to JOIN/link tables together.

独享拥抱 2024-10-01 21:38:00
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

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

Try to replace the first * with resultid. If this helps, then add more columns to SELECT and add them to GROUP BY at the same time.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文