Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Minimieren von SQL-Abfragen mithilfe von Join mit einer Eins-zu-Viele-Beziehung

Sie können alles in einer einzigen Abfrage mit einem einfachen Join erhalten, z. B.:

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

Dies gibt alle Daten zurück, aber es ist ein bisschen mühsam zu konsumieren, da Sie sowieso durch jede Person iterieren müssen. Sie können weiter gehen und sie gruppieren:

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

Als Ausgabe erhalten Sie etwa Folgendes:

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