MySql GROUP_CONCAT – Functie van de maand – juli 2019

Als je twee MySql tabellen hebt die met een “foreign key” gekoppeld zijn komt het vaak voor dat je in overzichten de master tabel wilt met daarnaast de child-tabel waardes in een lijstje. Dit kan je oplossen door een Sql-statement in een PHP-loop te zetten. Maar het is ook mogelijk om dit direct in een MySql-statement te doen met GROUP_CONCAT, performance-technisch is dit ook beter.

Voorbeeld:

SELECT
  MainTable.ID,
  MainTable.Name,
  GROUP_CONCAT(
    ChildTable.Name
    ORDER BY ChildTable.Name
  ) AS ChildNames
FROM
  MainTable
INNER JOIN
  ChildTable
ON
  MainTable.ID=ChildTable.FKMainTableID
GROUP BY
  MainTable.ID,MainTable.Name

Resultaat:

ID Name ChildNames
1 Bunnik Bunnik,Odijk,Werkhoven
4 Houten ’t Goy,Houten,Schalkwijk,Tull en ’t Waal