Ombyggnad 2026/2027 pågår - döda länkar förekommer. Mer information

RFC: Lista grupper som kolumn i SQL-query

2008-07-29 på Anders Ytterströms webblogg

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.

  1. select
  2. user.*,
  3. group_concat(`group`.value) as `groups`
  4. from user
  5. left join (`groups`,`group`)
  6. on (`groups`.userid=user.id and
  7. `group`.id=`groups`.groupid)
  8. 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?


Ovanstående inlägg publicerades 2008-07-29. Det går att prenumerera på denna webblogg. Härifrån är följande mål rekommenderade: