Mysql
 sql >> Base de données >  >> RDS >> Mysql

Minimisation des requêtes SQL à l'aide d'une jointure avec une relation un-à-plusieurs

Vous pouvez tout obtenir en une seule requête avec une simple jointure, par exemple :

SELECT   d.name AS 'department', p.name AS 'name'
FROM     department d
  LEFT JOIN people p ON p.department_id = d.id
ORDER BY department

Cela renvoie toutes les données, mais c'est un peu pénible à consommer, car vous devrez de toute façon parcourir chaque personne. Vous pouvez aller plus loin et les regrouper :

SELECT   d.name AS 'department',
         GROUP_CONCAT(p.name SEPARATOR ', ') AS 'name'
FROM     department d
  LEFT JOIN people p ON p.department_id = d.id
GROUP BY department

Vous obtiendrez quelque chose comme ceci en sortie :

department | name
-----------|----------------
sales      | Tom, Bill, Rachel
marketing  | Jessica, John