【发布时间】:2014-08-02 08:55:42
【问题描述】:
我正在开发一个投注系统,基本上有一组比赛(或游戏)。比赛总是有 2 支球队可供用户投注。
我有以下数据库结构:
匹配:
团队:
赌注:
我想要对查询执行的操作是从数据库中获取每场比赛中与每支球队相关的比赛和投注金额总和,并列出所有比赛以及与之相关的所有信息。
我的距离:
$query="SELECT
a.*,
SUM(b.amount) AS sumA,
SUM(c.amount) AS sumB,
d.name AS teamNameA,
e.name AS teamNameB
FROM matches AS a
LEFT JOIN bets AS b ON(a.teamA = b.team_id AND a.id = b.match_id)
LEFT JOIN bets AS c ON(a.teamB = c.team_id AND a.id = c.match_id)
LEFT JOIN teams AS d ON(a.teamA = d.id)
LEFT JOIN teams AS e ON(a.teamB = e.id) GROUP BY id"
$result = mysql_query($query);
$resultArray = array();
while($row = mysql_fetch_assoc($result)){
$resultArray[] = $row;
}
print_r($resultArray);
exit();
打印的内容:
Array
(
[0] => Array
(
[id] => 1
[teamA] => 1
[teamB] => 2
[teamNameA] => "Team 1"
[teamNameB] => "Team 2"
[sumA] => 400
[sumB] => 200
)
[1] => Array
(
[id] => 1
[teamA] => 1
[teamB] => 2
[teamNameA] => "Team 1"
[teamNameB] => "Team 2"
[sumA] =>
[sumB] =>
)
[2] => Array
(
[id] => 1
[teamA] => 1
[teamB] => 2
[teamNameA] => "Team 1"
[teamNameB] => "Team 2"
[sumA] =>
[sumB] =>
)
)
这几乎是完美的,但是第一行的“sumA”和“sumB”项中的数量是错误的。 “sumA”应该等于 200,“sumB”应该等于 100。当然它是重复求和过程。我尝试在 SUM 中使用“DISTINCT”语句,但它们消除了金额的相等值,“sumA”得到 100,“sumB”得到 50,这仍然是错误的。
【问题讨论】: