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

Unione di righe come matrice da un'altra tabella per ogni riga

Penso che tu abbia bisogno di GROUP_CONCAT

Fai qualcosa del genere:-

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

Otterrai un elenco di collegamenti separati da virgole per ogni film. Che puoi estrarre in questo modo:-

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

Aggiornamenti Penso che questo sia l'unico modo per ottenere i risultati senza avere più righe di risultati per un singolo film con più collegamenti.

Fai solo attenzione alla lunghezza massima dei caratteri che puoi ottenere nel risultato - per impostazione predefinita 1024 caratteri. Leggi questoMysql group_concat_max_length e Lunghezza massima concat gruppo per sapere come scavalcare il limite.

E come ha sottolineato Dan Grossman, se ritieni che i link possano contenere una virgola, usa un delimitatore diverso o non comune.