【发布时间】:2016-10-21 02:34:30
【问题描述】:
我很难在我在 SELECT JOIN 语句中创建的表中的列中添加总和(嗯,确实是一个差异)。让我展示一下我所拥有的(简短形式),然后解释一下:
User Name Betting Site Home Team Away Team Wager Odds
Ridge LeoVegas Molde Tromso 1000 2.20
Ridge Nordic Bet Molde Tromso 3000 1.60
Ridge LeoVegas Aalesund Rosenborg 4000 1.30
Simon Comeon Aalesund Rosenborg 2000 1.40
因此,此表显示了用户的投注历史、在哪个网站、所涉及的球队、投注和比赛赔率。我通过一个相当长的查询创建了这个表,该查询通过 JOIN/ON 结合了用户表、投注站点表、游戏表等。
目前,我们的投注网站表中有 10 个投注网站,我们正在跟踪/每位用户他们在每个网站上的排名。 所以,在 Ridge 的个人资料页面上,我还有一张桌子:
Betting Site Deposit Bonus Rollover Rollover Remaining Days
LeoVegas 4000 4000 10 ? 30
Nordic Bet 4000 4000 6 ? 30
Comeon 3000 3000 12 ? 90
这个问号是我遇到困难的地方。你看,我正在尝试将顶部表格中列出的所有投注的总和与投注网站和用户匹配。通过 JOIN 语句(和 $_GET 变量),我只能选择特定用户和特定投注网站的信息。但我无法让 SUM 正常工作。这就是我希望它的工作方式:
剩余流水是对特定网站的 ((bonus * rollover) - sum(wagers)) 的计算。
Ridge Robinson's Status
Betting Site Deposit Bonus Rollover Rollover Remaining Days
LeoVegas 4000 4000 10 35000 (*40000-5000*)30
Nordic Bet 4000 4000 6 21000 (*24000-3000*)30
Comeon 3000 3000 12 36000 (*36000-0*) 90
这是我尝试过的:
SELECT
b.betting_site_name,
b.deposit,
b.bonus,
b.odds,
b.rollover,
b.days,
u.wager,
(SELECT
SUM(wager) AS 'Total Risk'
FROM userbets AS ub
JOIN users AS u ON ub.userid = u.id
JOIN bonuses AS b ON ub.siteid = b.id
WHERE u.id = $id AND betting_site_name='$betsite') AS 'Total Rollover'
FROM bonuses AS b
LEFT JOIN userbets AS u ON u.siteid = b.id
LEFT JOIN users ON u.userid = users.id
WHERE users.id=$id AND betting_site_name='$betsite'
GROUP BY b.id;
但问题是,无论投注网站是什么,它都会计算相同的翻转金额,因此它们都与 LeoVegas 的顶级投注网站相同。有谁知道我如何使用 SUM 来使用 $row 中列出的博彩网站?我知道(嗯,不知道它还会从哪里来)错误来自我的 SUM WHERE 子句,但不知道如果没有它,如何对特定的投注网站求和。
谢谢
【问题讨论】: