2011-01-28 34 views
0

谢谢大家你帮我的第一次尝试再次卡住 - 需要另一个GROUP_CONCAT添加到MySQL查询

我想第二GROUP_CONCAT添加到查询到的数据返回到VB.Net数据网格。我想汇总2列到新列有点像下面的结果:

现有数据

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  Tags  
    -------------------------------------------- 
    1-1-11  Nike  1   Away 
    1-1-11  Nike  1   Rained out 
    2-1-11  Crisco  2   Home 
    2-1-11  Crisco  2   Injury 

并推出两列了GROUP_CONCATs得到的结果是这样的

Date  Sponsor Match_no  Teams_playing   Tags 
    ---------------------------------------------------------------- 
    1-1-11 Nike   1   Tigers vs Bears  Away, Rained Out 
    2-1-11 Crisco  2   Llamas vs Tigers  Home, injury 

我在这里接受了一些建议,并在Team_matches和Matches_tags上创建了连接表。

现在有7个表格:

Dates  Sponsors  Match  Team   Tags matches_tags team_matches 
-------------------------------------------------------------------------------------- 
Date_id  Sponsor_id  Match_id  Team_id Tag_id  Match_id  Team_id 
Date  Sponsor_name Match_no  Team_name Tag_name Tag_id  Match_id 
      date_id  sponsor_id 

我的查询到目前为止是:

select d.date, s.sponsor_name, m.match_no, 
group_concat(t.team_name separator ' vs ') Teams_playing, 
group_concat(tg.tag_name separator ' , ') Comments 
from matchs m 
inner join matches_teams mte on mte.match_id = m.match_id 
inner join matches_tags mta on mta.match_id = m.match_id 
inner join team t on t.team_id = mte.team_id 
inner join tags tg on tg.tag_id = mta.tag_id 
inner join sponsors s on s.sponsor_id = m.sponsor_id 
inner join dates d on d.date_id = s.date_id 
group by m.match_id, d.date, s.sponsor_name, m.match_no, tg.tag_id 

并返回结果:

date sponsor  match_no  teams playing comments 
-------------------------------------------------------------------- 
1-1-11 Nike   1   Bears vs Tigers Rained out , Rained out 
1-1-11 Nike   1   Bears vs Tigers Cancelled , Cancelled 
1-1-11 Nike   3   Earwigs vs Goombas Away , Away 
2-1-11 Crisco   2   Tigers vs Llamas Away , Away 

这不是什么即时通讯后:

+0

等待,什么体育赛事具有克里斯科作为赞助商? – SeanDowney 2012-05-24 19:31:00

回答

0
SELECT d.date, s.sponsor_name, m.match_no, 
     GROUP_CONCAT(t.team_name separator ' vs ') Teams_playing, 
     (
     SELECT GROUP_CONCAT(tg.tag_name SEPARATOR ', ') 
     FROM matches_tags mta 
     JOIN tags tg 
     ON  tg.tag_id = mta.tag_id 
     WHERE mta.match_id = m.match_id 
     ) AS comments 
FROM matchs m 
JOIN matches_teams mte on mte.match_id = m.match_id 
JOIN team t on t.team_id = mte.team_id 
JOIN sponsors s on s.sponsor_id = m.sponsor_id 
JOIN dates d on d.date_id = s.date_id 
GROUP BY 
     m.match_id 
+0

感谢您的快速回复Quassnoi - 那关闭了,但它返回错误的标签值1-1-11,耐克,1,熊与老虎,外出,取消,离开, 2-1-11,Crisco,2, 1-1-11,Nike,3,Earwigs vs Goombas,Rained out,Canceled,Away,Away 比赛1的标签应该“下雨,取消”和匹配2应该是“走开” – dMO 2011-01-28 17:37:24