sql >> Databasteknik >  >> RDS >> Mysql

Minimera SQL-frågor med hjälp av koppling med en-till-många-relation

Du kan få allt i en enda fråga med en enkel join, t.ex.:

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

Detta returnerar all data, men det är lite jobbigt att konsumera, eftersom du måste iterera igenom varje person ändå. Du kan gå längre och gruppera dem:

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

Du får något sånt här som utdata:

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


  1. beställa efter... siffror? Hjälp mig sortera ip-adresser

  2. MySQL Select och IF() uttalande

  3. Hur man flyttar datafiler i SQL Server – Del 1

  4. Vad är ISO_year i sql-server