2017-02-21 83 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'; 
相關問題