Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Minimizando consultas SQL usando o relacionamento um-para-muitos


Você pode obter tudo em uma única consulta com uma junção simples, por exemplo:
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

Isso retorna todos os dados, mas é um pouco trabalhoso consumir, já que você terá que iterar por todas as pessoas de qualquer maneira. Você pode ir mais longe e agrupá-los:
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

Você obterá algo assim como saída:
department | name
-----------|----------------
sales      | Tom, Bill, Rachel
marketing  | Jessica, John