使用其他表中的sum(data)更新列

时间:2014-04-07 19:50:11

标签: php mysql

好的,我在这里画了一个空白,迫切需要你的帮助!

3张表:

匹配(id,goals_slot_1,goals_slot_2,赢了,抽奖)

球队(身份证,姓名,得分,得分,对象,获胜,失败,平局,分数)

团队匹配(联结表)(team_id,match_id)

所以我想要实现的目标是更新“绘图”。 球队表格中的列设置为' sum(draw)'根据团队的匹配表。 ' draw'的价值在匹配表中是' 1'当它是平局时,' 0' 0什么时候没有。

我再也无法弄清楚了。坚持了几天...... 有人能让我走上正轨吗?

1 个答案:

答案 0 :(得分:0)

您需要使用相关的子查询来获取其他表中的值。类似的东西:

UPDATE `teams`
SET `draw`=(SELECT SUM(`draw`)
            FROM `matches`
            WHERE `id` IN (SELECT `match_id`
                           FROM `team-match`
                           WHERE `team_id`=`teams`.`id`))

甚至是带有连接的单个子查询:

UPDATE `teams`
SET `draw`=(SELECT SUM(`draw`)
            FROM `matches`
                JOIN `team-match`
                    ON `team-match`.`match_id`=`matches`.`id`
            WHERE `team-match`.`team_id`=`teams`.`id`)

两者都应该做的工作。我认为第一个更好的性能,但没有经过测试,实际上它们应该在几毫秒之内。除此之外,您需要使用php来查询值并更新各个行。实际上,获胜/失败/绘制列可以在运行中以类似的性能进行计算,您不必每次匹配都更新值。