我正在尝试设置查询以将数据返回到VB.Net数据网格。我想将结果汇总到一个新列中,如下所示:
例如,在Match-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 :(得分: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
答案 1 :(得分:0)
您的表格结构看起来很可疑。日期与Match没有对应关系。团队应该在一个带有桥梁的单独表中:
match_team
-----------
match_id
team_id
或者如果每场比赛只有两支球队,那么只需
match
---------
match_id
Match_no
sponsor_id
date_id
team_id_a
team_id_b
通常,人们不会创建只包含id和日期的日期表,例如它无法帮助按日期索引或搜索匹配表。
对于您的原始问题,查询将是
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