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

bagaimana cara mendapatkan nilai dari tabel mysql yang dipesan oleh tabel lain?

Selain memiliki kolom ReferenceType di tabel ref_types, Anda juga memerlukan kolom Reference_ID yang merujuk ke ID aktual di tabel terkait sebagai kunci asing .

//ref_types table
ID Article_ID ReferenceType Reference_ID
1  1          book          1
2  1          article       1
3  1          article       2
4  1          book          2

Kemudian, Anda dapat menghindari loop WHILE dan membiarkan MySQL melakukan pekerjaan untuk Anda dengan GABUNG:

SELECT CONCAT('record ', rt.ID, ': ',
  COALESCE(ar.Article_Title, tr.Thesis_Title, br.Book_Title))
FROM ref_types rt
LEFT JOIN article_refs ar
  ON rt.ReferenceType = 'article' AND ar.ID = rt.Reference_ID
LEFT JOIN book_refs br
  ON rt.ReferenceType = 'book' AND br.ID = rt.Reference_ID
LEFT JOIN thesis_refs tr 
  ON rt.ReferenceType = 'thesis' AND tr.ID = rt.Reference_ID

Menghasilkan hasil:

record 1: book1
record 2: article1
record 3: article2
record 4: book2


  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 Amazon RDS:'Fitur Innodb dinonaktifkan' kesalahan dari aplikasi

  2. Sisipan Lambat MySQL

  3. Shutdown otomatis MySQL

  4. Kueri dua tabel dan ganti nilai dari satu tabel di tabel kedua

  5. Cara menangani karakter internasional dengan benar di PHP / MySQL / Apache