En MySQL 5 databas, med följande tabeller (primärnycklar framhävda):
user : id : name : email
group : id : value
groups : userid : groupid
Min mycket eliminenta uppgift var att åstadkomma en SQL query som ger följande resultat:
id name email groups
1 Anders anders@madr.se root,writer,user
Efter litet manualläsande och googlande kom jag fram till att group_concat
uppnådde det jag ville göra.
select
user.*,
group_concat(`group`.value) as `groups`
from user
left join (`groups`,`group`)
on (`groups`.userid=user.id and
`group`.id=`groups`.groupid)
group by `groups`.userid;
Det måste finnas några nackdelar!¶
Jag erkänner att SQL inte är min starka sida och därför vill jag nu ha hjälp. Vilka index bör jag sätta förutom nycklarna, om några? Finns det bättre och skonsammare sätt än group_concat
?