2012-04-12 54 views
4

我有了基本的足球遊戲中,它看起來像這樣mysql的兩個表相同的條目名稱添加值

team1 || team1score || team2|| team2score || time || league 

我想這取決於從日曆表條目來更新我的職位表中的日曆條目表。

因此,例如,如果我有我的表像

Pats || 14 || Saints || 3 || 1stleague 
Cows || 7 || falc || 14 || 1stleague 
Saints || 31 || falc || 3 || 1stleague 
Saints || 14 || cows || 3 || 1stleague 

我想要一個查詢,將先用不同team1name總結在team1score列中的所有值。因此,對於它上面的表格會給結果

Pats || 14 
Cows || 7 
Saints || 45 

然後我想做同樣的事情TEAM2和team2score所以結果將是

Saints || 3 
falc || 17 
cows || 3 

那麼我想加入這兩個結果並獲得:

Pats || 14 
Cows || 10 
Saints || 48 
falc || 17 

我想是這樣的

select distinct(t.team1), sum(t.team1score) 
    from calendar t 
    where league = '5a7' 
    UNION 
    select distinct(t2.team2), sum(t2.team2score) 
    from calendar t2 
    where league = '5a7' 

但是不添加相同的球隊得分有什麼想法?

我知道在進行工會時我沒有拿到這筆錢,但我認爲我需要做一個工會來保留在teams2列上沒有匹配團隊的值。然而,我無法弄清楚如何在同一時間完成工會和總結。

回答

2

使用子查詢創建TEAM1和TEAM2列的聯合,聚集分數(只)在外部查詢:

SELECT LOWER(t.team) team, SUM(t.score) score 
FROM (
    SELECT team1 team, team1score score 
    FROM calendar 
    WHERE league='5a7' 
    UNION ALL 
    SELECT team2, team2score 
    FROM calendar 
    WHERE league='5a7' 
) t 
GROUP BY 1 

編輯:UNION,名稱/別名在聯合之後的select語句被忽略。如果您認爲它提高了可讀性,您可以添加teamscore。但是,這不是必需的。

編輯:增加了LOWER,即組不區分大小寫。

+0

應該有team2score的分數嗎? – user541597 2012-04-12 22:10:14

+0

它沒有添加來自不同方面的值。例如在我的例子中,它不添加奶牛7 +奶牛3。 – user541597 2012-04-12 22:16:28

相關問題