sql >> Database teknologi >  >> RDS >> Mysql

Sammenføjning af rækker som matrix fra en anden tabel for hver række

Jeg tror, ​​du har brug for mysqls GROUP_CONCAT

Gør noget som dette:-

SELECT 
    movies.*, 
    group_concat(links.link ', ') as links
FROM movies 
LEFT JOIN links 
ON links.movieid = movies.movieid 
GROUP BY movies.movieid

Du får en kommasepareret liste over links til hver film. Som du kan udtrække sådan her:-

foreach ($movies->result() as $row) {
  $linksArray = explode(",",$row->links);
}

Opdateringer Jeg tror, ​​det er den eneste måde, hvorpå du kan få resultaterne uden at have flere resultatrækker for en enkelt film med flere links.

Bare vær forsigtig med den maksimale længde af tegn, du kan få i resultatet - som standard 1024 tegn. Læs denneMysql group_concat_max_length og Gruppe concat maks. længde at vide, hvordan man tilsidesætter grænsen.

Og som Dan Grossman har påpeget, hvis du føler, at linkene kan indeholde komma, skal du bruge en anden eller ualmindelig afgrænsning.



  1. BESTIL EFTER ét ID, når der er flere af de samme ID'er i en tabel

  2. SQLite og tilpasset rækkefølge efter

  3. Mysql fuldtekst søgerelevans på tværs af flere tabeller

  4. Undtagelse i trådens hoved org.hibernate.MappingException:Ukendt enhed