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

Truy vấn MySQL tham gia ba bảng

Ý bạn là như thế này:

select
    a.project_id,
    b.list_id,
    c.item_id
from
    projects a
        join lists b
            on a.project_id=b.project_id
        join items c
            on b.list_id=c.list_id

Đầu ra sẽ như sau:

project_id | list_id | item_id
 1         | 5       |  45
 1         | 5       |  46
 1         | 8       |  12

Hay bạn muốn trả lại tất cả các phần của nó trong một hàng duy nhất?

Nếu bạn muốn có một hàng duy nhất, bạn có thể làm điều gì đó dọc theo các dòng:

select
    a.project_id,
    group_concat(b.list_id) as listIDs,
    group_concat(c.item_id) as itemIDs
from
    projects a
        join lists b
            on a.project_id=b.project_id
        join items c
            on b.list_id=c.list_id

Nhưng nó sẽ trở nên lộn xộn hơn trong PHP khi xử lý tất cả những thứ được nhóm lại.

Đầu ra sẽ như sau:

project_id | list_id | item_id
 1         | 5,8     |  45, 46, 12

Bạn cũng có thể trộn và kết hợp cả hai để có thể tận dụng tối đa cả hai thế giới:

select
    a.project_id,
    b.list_id as listIDs,
    group_concat(c.item_id) as itemIDs
from
    projects a
        join lists b
            on a.project_id=b.project_id
        join items c
            on b.list_id=c.list_id

Đầu ra sẽ như sau:

project_id | list_id | item_id
 1         | 5       |  45, 46
 1         | 8       |  12


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách lấy bản ghi ngay từ hôm nay trong MySQL

  2. GeoDjango &MySQL:điểm không thể là NULL, tôi nên sử dụng giá trị trống nào khác?

  3. Rắc rối khi xoay quanh truy vấn xóa SQL phức tạp

  4. chỉ chọn khi giá trị khác nhau

  5. mysqli_fetch_array () mong muốn tham số 1 là mysqli_result, boolean được đưa vào