sql >> Base de Datos >  >> RDS >> Mysql

Unir filas como matriz de otra tabla para cada fila

Creo que necesita mysql GROUP_CONCAT

Haz algo como esto:-

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

Obtendrá una lista de enlaces separados por comas para cada película. Que puede extraer así:-

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

Actualizaciones Creo que esta es la única forma en que puede obtener los resultados sin tener múltiples filas de resultados para una sola película con múltiples enlaces.

Solo tenga cuidado con la longitud máxima de caracteres que puede obtener en el resultado:por defecto, 1024 caracteres. Lea estoMysql group_concat_max_length y Longitud máxima de concat de grupo para saber cómo anular el límite.

Y como ha señalado Dan Grossman, si cree que los enlaces pueden contener una coma, use un delimitador diferente o poco común.