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

Zobrazit více záznamů za sebou

Stačí provést zřetězení skupiny spolu se spojením mezi dvěma tabulkami:

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;

Ukázka

Všimněte si, že schéma tabulky zřejmě není zcela normalizováno. Obvykle je způsob, jak tento problém vyřešit, mít jednu tabulku pro informace o studentech, jednu tabulku pro události a pak spojení stůl, který spojuje studenty s událostmi. Vaši students Zdá se, že tabulka slouží jako spojovací tabulka i jako tabulka obsahující jedinečné informace o studentech.

Takže lepší způsob, jak zde postupovat, by bylo refaktorovat students obsahovat toto:

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

A vytvořte novou spojovací tabulku student_event obsahovat vztah mezi studenty a událostmi:

(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. Jak získat hodnoty sloupce identity bez uvedení názvu sloupce identity ve výběru - SQL Server / Výukový program T-SQL, část 46

  2. Jak skrýt sloupec aliasů v mysql UPRAVENÉ

  3. Spojení nevrací správné výsledky. Co dělám špatně?

  4. optimalizovat Query v PostgreSQL