Mysql
 sql >> база данни >  >> RDS >> Mysql

Съединяване на редове като масив от друга таблица за всеки ред

Мисля, че имате нужда от GROUP_CONCAT<на mysql /a>

Направете нещо подобно:-

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

Ще получите разделен със запетая списък с връзки за всеки филм. Който можете да извлечете по следния начин:-

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

Актуализации Мисля, че това е единственият начин да получите резултатите, без да имате множество редове с резултати за един филм с множество връзки.

Просто внимавайте за максималната дължина на знаците, които можете да получите в резултата - по подразбиране 1024 знака. Прочетете товаMysql group_concat_max_length и Максимална дължина на конкат на група за да знаете как да отмените лимита.

И както Дан Гросман посочи, ако смятате, че връзките може да съдържат запетая, използвайте различен или необичаен разделител.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Sum колона IF ID е в друга заявка за таблица

  2. MySQL PDO как да свързвам параметри за IN()

  3. Използване на MySQL функции в PHP PDO подготвени оператори

  4. Използването на функцията за база данни get_results() на WordPress предотвратява ли инжектирането на sql

  5. Съхранявайте файловите пътеки в база данни