Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Minimalizowanie zapytań SQL przy użyciu sprzężenia z relacją jeden-do-wielu

Możesz to wszystko uzyskać w jednym zapytaniu za pomocą prostego sprzężenia, np.:

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

Zwraca to wszystkie dane, ale jest to trochę uciążliwe, ponieważ i tak będziesz musiał przejść przez każdą osobę. Możesz pójść dalej i pogrupować je razem:

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 wynik otrzymasz coś takiego:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Różnica dat między dwoma rekordami w tej samej tabeli

  2. Nie można przechowywać znaków UTF8 w MySQL

  3. Czy mysql_fetch_assoc automatycznie wykrywa zwracane typy danych?

  4. Grupuj według miesiąca, w tym puste miesiące

  5. Długość komentarza do tabeli w MySQL