sql >> Databáze >  >> RDS >> Mysql

Minimalizace dotazů SQL pomocí spojení se vztahem one-to-many

To vše můžete získat v jediném dotazu s jednoduchým spojením, např.:

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

Tím se vrátí všechna data, ale je to trochu trápení, protože stejně budete muset procházet každou osobu. Můžete jít dále a seskupit je:

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

Jako výstup dostanete něco takového:

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


  1. MySQL SELECT posledních pár dní?

  2. Co je fulltextový index a kdy jej mám použít?

  3. Implementace společného indikátoru výkonu MS SQL Server

  4. Jak vyřešit není chyba GROUP BY v dotazu mysql