0

初めての試みでしたが、ご協力ありがとうございました

クエリに 2 番目の 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_CONCAT でロールアップして、次のような結果を取得します

 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

これは私が後にしているものではありません:

4

1 に答える 1

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
于 2011-01-28T17:17:39.300 に答える