好的,我在这里画了一个空白,迫切需要你的帮助!
3张表:
匹配(id,goals_slot_1,goals_slot_2,赢了,抽奖)
球队(身份证,姓名,得分,得分,对象,获胜,失败,平局,分数)
团队匹配(联结表)(team_id,match_id)
所以我想要实现的目标是更新“绘图”。 球队表格中的列设置为' sum(draw)'根据团队的匹配表。 ' draw'的价值在匹配表中是' 1'当它是平局时,' 0' 0什么时候没有。
我再也无法弄清楚了。坚持了几天...... 有人能让我走上正轨吗?
答案 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来查询值并更新各个行。实际上,获胜/失败/绘制列可以在运行中以类似的性能进行计算,您不必每次匹配都更新值。