Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Łączenie wierszy jako tablica z innej tabeli dla każdego wiersza

Myślę, że potrzebujesz GROUP_CONCAT

Zrób coś takiego:-

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

Otrzymasz listę linków oddzielonych przecinkami dla każdego filmu. Które możesz wyodrębnić w ten sposób:-

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

Aktualizacje Myślę, że to jedyny sposób na uzyskanie wyników bez wielu wierszy wyników dla jednego filmu z wieloma linkami.

Uważaj tylko na maksymalną długość znaków, jaką możesz uzyskać w wyniku - domyślnie 1024 znaki. Przeczytaj toMysql group_concat_max_length i Maksymalna długość połączenia grupy wiedzieć, jak przekroczyć limit.

I jak wskazał Dan Grossman, jeśli uważasz, że linki mogą zawierać przecinek, użyj innego lub nietypowego ogranicznika.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wydajność MySQL — klauzula IN a równanie (=) dla pojedynczej wartości

  2. niepoprawny specyfikator kolumny dla kolumny

  3. Uzyskiwanie zmodyfikowanych danych przechodzenia z drzewa zamówień w przedsprzedaży do tablicy

  4. mysql Błąd krytyczny:nie można przydzielić pamięci dla puli buforów

  5. MySQL Workbench nie wyświetla wyników zapytania