sql >> Databáze >  >> RDS >> Mysql

Spojení řádků jako pole z jiné tabulky pro každý řádek

Myslím, že potřebujete mysql GROUP_CONCAT

Udělejte něco takového:-

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

Získáte čárkami oddělený seznam odkazů pro každý film. Který můžete extrahovat takto:-

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

Aktualizace Myslím, že toto je jediný způsob, jak můžete získat výsledky, aniž byste měli více řádků výsledků pro jeden film s více odkazy.

Jen pozor na maximální délku znaků, které můžete ve výsledku získat – standardně 1024 znaků. Přečtěte si totoMysql group_concat_max_length a Maximální délka spojení skupiny abyste věděli, jak překročit limit.

A jak poukázal Dan Grossman, pokud máte pocit, že odkazy mohou obsahovat čárku, použijte jiný nebo neobvyklý oddělovač.



  1. Jak nainstalovat více serverů PostgreSQL na RedHat Linux

  2. MYSQL vypočítává průměr na počet

  3. PHP související s PDO:Aktualizace příkazu SQL neaktualizuje obsah databáze

  4. ORA-00932:nekonzistentní datové typy:očekáváno - dostal CLOB