2017-02-21 70 views
0

我有一个包含体育比分和积分榜的数据库。我有一个表榜上,像这样......根据第二表中输入的值更新MYSQL表格

Team  Overall Record Conference Record 
Team1 5-0    2-0 
Team2 4-1    1-1 
Team3 3-2    0-2 

而且我对游戏结果表...

Team Result1 Result2 Result3 Result4 Result5 Result6 
Team1 W  W   W  W   W 
Team2 W  L   W  W   W 
Team3 W  L   L  W   W 

现在,当我添加了一个“W”到Result6下一场比赛,是否有办法让Team1的记录更新到6-0的排名表中,或者如果它是“L”,那么将其更改为5-1?

+0

你的数据结构确实需要改进。将结果存储在不同的列中不是存储重复数据的SQLish方式。 –

+0

为什么不能获得赢,失,总比赛? – r0xette

回答

0

你有一个糟糕的桌子结构,我也有一个坏的报价!

SET @teamname := 'team1'; 

SELECT @myres := concat(Result1,Result2,Result3,Result4,Result5,Result6) -- and other columns 
FROM results 
WHERE team = @teamname; 

UPDATE sports_score 
SET overal = concat(
     length(@myres)-length(replace(@myres,'W','')) 
,'-', 
     length(@myres)-length(replace(@myres,'L','')) 
) 
WHERE team = @teamname ; 
0

这种方式的名称为“triggers”。后更新似乎匹配你的情况。

尽管如其他人所建议的那样,您的数据库设计还远远不够完美。

基本上,@ r0xette提出了一个极好的建议:保持胜利,失败,绘制在你的“积分榜”表中,然后你可以在触发器更新中增加适当的列,而你不需要关心以前的价值观和经历在“游戏”表中的一整套列/记录来计算你的“记录”对 - 你会在选择时间做它,像:

SELECT concat(win, ' - ', loss) AS OverallRecord FROM standings WHERE team = 'team1'; 
相关问题