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

làm thế nào để lấy giá trị từ bảng mysql được sắp xếp bởi một bảng khác?

Ngoài việc có cột ReferenceType trong bảng ref_types, bạn cũng cần một cột Reference_ID đề cập đến ID thực tế trong bảng tương ứng dưới dạng khóa ngoại .

//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

Sau đó, bạn có thể tránh vòng lặp WHILE và để MySQL thực hiện công việc cho bạn với JOINs:

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

Mang lại kết quả:

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. SQL:Số nhóm trong các hàng kết quả riêng lẻ

  2. chèn nhiều giá trị trong một thuộc tính

  3. sự khác biệt giữa khóa chính và khóa duy nhất

  4. MySQL - CHỌN WHERE ngày <X

  5. Tại sao TRANSACTION / COMMIT lại cải thiện hiệu suất rất nhiều với PHP / MySQL (InnoDB)?