Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nối các hàng dưới dạng mảng từ một bảng khác cho mỗi hàng

Tôi nghĩ bạn cần có GROUP_CONCAT của mysql

Làm điều gì đó như sau:-

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

Bạn sẽ nhận được danh sách các liên kết được phân tách bằng dấu phẩy cho mỗi bộ phim. Bạn có thể trích xuất như thế này:-

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

Cập nhật Tôi nghĩ đây là cách duy nhất bạn có thể nhận được kết quả mà không cần có nhiều hàng kết quả cho một bộ phim có nhiều liên kết.

Chỉ cần cẩn thận về độ dài ký tự tối đa mà bạn có thể nhận được trong kết quả - theo mặc định là 1024 ký tự. Đọc phần này Mysql group_concat_max_length Độ dài tối đa của concat nhóm để biết cách vượt qua giới hạn.

Và như Dan Grossman đã tìm ra, nếu bạn cảm thấy các liên kết có thể chứa dấu phẩy, hãy sử dụng dấu phân cách khác hoặc không phổ biến.



  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 Tương đương với PHP meta và soundex

  2. số lần xuất hiện số mysql của ký tự đặc biệt trong một trường

  3. Sự cố cơ sở dữ liệu UTF-8

  4. Làm thế nào để các diễn đàn hiển thị cho bạn các chủ đề chưa đọc?

  5. Trong SQL, cách chọn 2 hàng trên cùng cho mỗi nhóm