sql >> Database >  >> RDS >> Mysql

Minimaliseren van SQL-query's met behulp van join met een-op-veel-relatie

Je kunt het allemaal in een enkele zoekopdracht krijgen met een simpele join, bijvoorbeeld:

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

Hiermee worden alle gegevens geretourneerd, maar het is een beetje lastig om te consumeren, omdat je toch door elke persoon moet herhalen. Je kunt verder gaan en ze samen groeperen:

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

Je krijgt zoiets als dit als uitvoer:

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


  1. Hoe INSERT INTO ... SELECT vergrendelingsgedrag verbeteren

  2. Oracle-gegevenstypen

  3. SQL*Plus hoe de tekstvariabele van de prompt te accepteren?

  4. mysql rij verplaatsen tussen tabellen