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

Mysql EAV đối sánh hàng dưới dạng giá trị thuộc tính của trường hoặc thực thể

Bạn có thể sử dụng nhiều phép nối bên trái để thực hiện việc này.

SELECT 
    o.create_date,
    o.title,
    o.author,
    op1.value AS start_date,
    op2.value AS end_date,
    ...
FROM object o
LEFT JOIN object_properties op1 ON op1.object_id=o.object_id AND op1.type_id=1
LEFT JOIN object_properties op2 ON op2.object_id=o.object_id AND op2.type_id=2

Các giá trị không có thuộc tính sẽ bị rỗng.

Phương pháp này bạn cũng không cần phải có truy vấn thứ hai để lấy các thuộc tính.

CHỈNH SỬA Nếu bạn không muốn truy xuất giá trị null, hãy bỏ qua left một phần của left join .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nối một hàng với nhiều hàng trong một bảng khác

  2. MySQL:lỗi 150 khi sử dụng ON UPDATE SET NULL và ON DELETE SET NULL, tại sao?

  3. phân loại theo giá cao-thấp với dữ liệu mysql

  4. Tại sao PHP PDO DSN lại là một định dạng khác cho MySQL so với PostgreSQL?

  5. Cập nhật chế độ xem trong MySQL