2011-01-26 83 views
1

我想設置一個查詢以將數據返回到VB.Net數據網格。我想彙總結果放入一個新列下面有點像:MySQL將行結果合併到一個新列

例如在配對NO:

Date  Sponsor Match_no  Team 
--------------------------------------- 
1-1-11  Nike  1   Tigers 
1-1-11  Nike  1   Bears 
2-1-11  Crisco  2   Llamas 
2-1-11  Crisco  2   Tigers 

捲起來,放入一個新列。

Date  Sponsor Match_no  Teams_playing 
--------------------------------------------------- 
1-1-11 Nike   1   Tigers vs Bears 
2-1-11 Crisco  2   Llamas vs Tigers 

我試圖用「GROUP_CONCAT」,但由於某種原因,不管match_no的捲起對球隊的整個列表到列。

在這個例子中會有4個表:

Dates  Sponsors   Match   Team 
------  --------   -------  -------- 
Date_id  Sponsor_id   Match_id  Team_id 
Date   Sponsor_name  Match_no  Team_name 
           Sponsor_id  Match_id 
+0

你忘了,包括最後的部分。 – 2011-01-26 23:56:44

回答

1

嘗試:

SELECT m.date, 
     m.sponsor, 
     m.match_no, 
     GROUP_CONCAT(m.team, SEPARATOR ' vs ') 
    FROM MATCH_NO m 
GROUP BY m.date, m.sponsor, m.match_no 
0

你的表結構看起來很可疑。日期與Match沒有對應關係。團隊應該是在一個單獨的表的橋樑:

match_team 
----------- 
match_id 
team_id 

或者有永遠只能將是每場比賽兩支球隊,那麼就

match 
--------- 
match_id 
Match_no 
sponsor_id 
date_id 
team_id_a 
team_id_b 

通常情況下,人們不會創建一個日期表只有id和日期,例如它不會幫助按日期對Match表進行索引或搜索。

對於你原來的問題,查詢將

select d.date, s.sponsor_name, m.match_no, 
    group_concat(teams_playing separator ' vs ') Teams_playing 
from match m 
inner join dates d on d.date_id = m.date_id 
inner join sponsors s on s.sponsor_id = m.sponsor_id 
inner join team t on t.match_id = m.match_id 
group by m.match_id, d.date, s.sponsor_name, m.match_no 

編號:GROUP_CONCAT

+0

非常感謝!抱歉,我沒有認爲它是按照實際情況發佈的。 – dMO 2011-01-27 16:08:47

相關問題