sql >> Base de Datos >  >> RDS >> Mysql

Minimización de consultas SQL mediante unión con relación de uno a muchos

Puede obtenerlo todo en una sola consulta con una simple unión, por ejemplo:

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

Esto devuelve todos los datos, pero es un poco complicado de consumir, ya que tendrás que iterar a través de cada persona de todos modos. Puede ir más allá y agruparlos:

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

Obtendrá algo como esto como salida:

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