Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verbinden von Zeilen als Array aus einer anderen Tabelle für jede Zeile

Ich denke, Sie brauchen mysqls GROUP_CONCAT

Tun Sie etwas wie folgt:-

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

Sie erhalten für jeden Film eine durch Kommas getrennte Liste mit Links, die Sie folgendermaßen extrahieren können:-

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

Aktualisierungen Ich denke, dies ist die einzige Möglichkeit, die Ergebnisse zu erhalten, ohne mehrere Ergebniszeilen für einen einzelnen Film mit mehreren Links zu haben.

Achten Sie nur auf die maximale Länge der Zeichen, die Sie im Ergebnis erhalten können - standardmäßig 1024 Zeichen. Lesen Sie diese Mysql group_concat_max_length und Maximale Länge der Gruppenkonkatierung um zu wissen, wie man das Limit überschreibt.

Und wie Dan Grossman betont hat, wenn Sie der Meinung sind, dass die Links Kommas enthalten, verwenden Sie ein anderes oder ungewöhnliches Trennzeichen.