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

MySQL Inner Join bảng dựa trên giá trị cột

Để có thống kê của tất cả các bảng, bạn có thể sử dụng UNION, với 2 hoặc nhiều lựa chọn, một lựa chọn cho mỗi bảng:

( SELECT s.*
       , table1.title AS name      --or whatever field you want to show
  FROM stats s
    JOIN $tableName1 table1
      ON s.id = table1.id
  WHERE tableName = '$tableName1'
)
UNION ALL
( SELECT s.*
       , table2.name AS name      --or whatever field you want to show
  FROM stats s
    JOIN $tableName2 table2
      ON s.id = table2.id
  WHERE tableName = '$tableName2'
)
UNION ALL
( SELECT s.*
       , table3.lastname AS name      --or whatever field you want to show
  FROM stats s
    JOIN $tableName3 table3
      ON s.id = table3.id
  WHERE tableName = '$tableName3'
)
;

Sử dụng ý tưởng của Winfred với LEFT JOIN S. Nó tạo ra các kết quả khác nhau, ví dụ:mọi trường từ các bảng khác được xuất trong cột riêng của nó (và nhiều NULL xảy ra).

SELECT s.*
     , table1.title      --or whatever fields you want to show
     , table2.name
     , table3.lastname   --etc
FROM stats s
  LEFT JOIN $tableName1 table1
    ON s.id = table1.id
      AND s.tableName = '$tableName1'
  LEFT JOIN $tableName2 table2
    ON s.id = table2.id
      AND s.tableName = '$tableName2'
  LEFT JOIN $tableName3 table3
    ON s.id = table3.id
      AND s.tableName = '$tableName3'
--this is to ensure that omited tables statistics don't appear
WHERE s.tablename IN
   ( '$tableName1'
   , '$tableName2'
   , '$tableName3'
   )
;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng JDBC / Mysql Connector trong ý tưởng intellij

  2. Tại sao nosql với cassandra thay vì mysql?

  3. Quản lý tài khoản người dùng, vai trò, quyền, xác thực PHP và MySQL - Phần 6

  4. Thay đổi giá trị thả xuống tiếp theo với sự kiện trao đổi thả xuống trước đó

  5. Thứ tự cột có quan trọng trong các bảng MySQL của bạn không?