3
students: id, last_name

1 Robinson
2 Norris
3 Smith

sports: id, title

1 Basketball 
2 Baseball
3 Football

students_sports: student_id, sport_id

1 3
1 2
2 1
2 3
3 3
3 1

このクエリ

select 
 last_name, sports.title as sport
from 
 students s
left join
 students_sports ss
on
 s.id = ss.student_id
left join
 sports
on
 ss.sport_id = sports.id

次のようなものが返されます。

last_name       sport
Robinson        basketball
Robinson        baseball
Smith           football
Smith           baseball
Norris          baseball
Norris          basketball

次のような結果を返すようにクエリを変更したいと思います。

last_name       sport
Robinson        basketball, baseball
Smith           football, baseball
Norris          baseball, basketball
4

1 に答える 1

9

@bradによって提案されたように:

select 
 last_name, group_concat(sports.title) as sport
from 
 students s
left join
 students_sports ss
on
 s.id = ss.student_id
left join
 sports
on
 ss.sport_id = sports.id
group by s.id

編集:グループを更新しました。

于 2012-04-18T15:34:37.480 に答える