Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tabel MySQL Inner Join berdasarkan nilai kolom

Untuk memiliki semua statistik tabel, Anda dapat menggunakan UNION, dengan 2 pilihan atau lebih, satu untuk setiap tabel:

( 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'
)
;

Menggunakan ide Winfred dengan LEFT JOIN s. Ini menghasilkan hasil yang berbeda, mis. setiap bidang dari tabel lain adalah output di kolomnya sendiri (dan banyak NULL terjadi).

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. MySQL:Masukkan catatan jika tidak ada di tabel

  2. tidak dapat menjatuhkan kunci asing di mySQL

  3. MySQL - Kesalahan entri duplikat saat mencoba menambahkan kolom baru

  4. Hitung berapa banyak baris yang nilainya sama

  5. Umlaut Jerman di MYSQL INSERT