sql >> Database >  >> RDS >> Mysql

Rijen samenvoegen als array uit een andere tabel voor elke rij

Ik denk dat je mysql's GROUP_CONCAT

Doe zoiets als dit:-

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

Je krijgt een door komma's gescheiden lijst met links voor elke film. Die je als volgt kunt extraheren:-

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

Updates Ik denk dat dit de enige manier is om de resultaten te krijgen zonder meerdere resultaatrijen voor een enkele film met meerdere links.

Wees voorzichtig met de maximale lengte van tekens die u in het resultaat kunt krijgen - standaard 1024 tekens. Lees ditMysql group_concat_max_length en Maximale lengte groepsconcat om te weten hoe u de limiet overschrijft.

En zoals Dan Grossman al zei:als je denkt dat de links komma's bevatten, gebruik dan een ander of ongebruikelijk scheidingsteken.



  1. Maak een favoriete lijstweergave met gedeelde voorkeuren

  2. Voeg een groot aantal variabelen in de tabel in met PDO

  3. UPDATE indien bestaat anders INSERT in SQL

  4. Hoe combineer ik een SELECT + WHERE-query met een INSERT-query?