Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Unindo linhas como array de outra tabela para cada linha


Acho que você precisa do GROUP_CONCAT

Faça algo assim:-
SELECT 
    movies.*, 
    group_concat(links.link ', ') as links
FROM movies 
LEFT JOIN links 
ON links.movieid = movies.movieid 
GROUP BY movies.movieid

Você receberá uma lista de links separados por vírgulas para cada filme. Que você pode extrair assim:-
foreach ($movies->result() as $row) {
  $linksArray = explode(",",$row->links);
}

Atualizações Acho que esta é a única maneira de obter os resultados sem ter várias linhas de resultados para um único filme com vários links.

Apenas tome cuidado com o comprimento máximo de caracteres que você pode obter no resultado - por padrão, 1024 caracteres. Leia isto
Mysql group_concat_max_length e Comprimento máximo de concat do grupo saber como ultrapassar o limite.

E como Dan Grossman apontou, se você achar que os links podem conter vírgulas, use um delimitador diferente ou incomum.