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

Cách thực hiện truy vấn eav này để tạo kết quả theo chiều ngang

Có một số cách để thực hiện điều này. Một cái gì đó như thế này sẽ hoạt động khi kết hợp trở lại bảng nhiều lần cho mỗi giá trị thuộc tính:

SELECT p.product_id,
    a.value height,
    a2.value width
FROM Product p
    JOIN Product_Attribute pa ON p.product_id = pa.product_id 
    JOIN Attribute a ON pa.attribute_id = a.attribute_id AND a.name = 'height'
    JOIN Product_Attribute pa2 ON p.product_id = pa2.product_id 
    JOIN Attribute a2 ON pa2.attribute_id = a2.attribute_id AND a2.name = 'width'

Và đây là Fiddle .

Đây là một phương pháp thay thế sử dụng MAX và GROUP BY mà cá nhân tôi thích:

SELECT p.product_id,
    MAX(Case WHEN a.name = 'height' THEN a.value END) height,
    MAX(Case WHEN a.name = 'width' THEN a.value END) width
FROM Product p
    JOIN Product_Attribute pa ON p.product_id = pa.product_id 
    JOIN Attribute a ON pa.attribute_id = a.attribute_id 
GROUP BY p.product_id

Chúc các bạn thành công.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. asp.net / MySQL:Quyền truy cập bị từ chối đối với người dùng '' @ 'localhost' (sử dụng mật khẩu:KHÔNG)

  2. Giá trị ràng buộc PDO cho câu lệnh MySQL IN

  3. Ràng buộc UNIQUE có tự động tạo INDEX trên (các) trường không?

  4. Làm cách nào để kích hoạt tiện ích mở rộng MySQLi trong PHP 7?

  5. Tìm khoảng cách giữa hai điểm bằng cách sử dụng vĩ độ và kinh độ trong mysql