Mysql
 sql >> база данни >  >> RDS >> Mysql

Показване на множество записи подред

Просто направете групова конкатенация заедно с обединяване между двете таблици:

SELECT
    s.student_name AS Students,
    GROUP_CONCAT(e.event_name) AS Events
FROM students s
LEFT JOIN events e
    ON s.event_id = e.event_id
GROUP BY
    s.student_name;

Демо

Имайте предвид, че схемата на вашата таблица изглежда не е напълно нормализирана. Обикновено начинът за справяне с този проблем е да имате една таблица за информация за ученици, една таблица за събития и след това възел таблица, която свързва учениците със събития. Вашите students таблицата изглежда служи както като съединителна таблица, така и като таблица, съдържаща уникална информация за ученик.

Така че по-добрият начин да продължите тук би бил да преработите students да съдържа това:

(1, 'student1'),
(2, 'student2'),
(3, 'student3');

И създайте нова съединителна таблица student_event да съдържа връзката между ученици и събития:

(id, student_id, event_id)
(1, 1, 1),
(2, 1, 2),
(3, 1, 3),
(4, 1, 4),
(5, 2, 3),
(6, 3, 2),
(7, 3, 4);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP/MySql Изберете коментари, групирани с отговори

  2. Най-голямата стойност на множество колони с име на колона?

  3. Е дата в рамките на някои от периодите

  4. Актуализиране на колона с COUNT други полета е SQL?

  5. MySQL:преброяване на групирани елементи?