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

Cách xoay một lược đồ thực thể-thuộc tính-giá trị MySQL

Câu hỏi đề cập đến MySQL và trên thực tế DBMS này có một chức năng đặc biệt cho loại vấn đề này:GROUP_CONCAT(expr) . Hãy xem tham khảo MySQL hướng dẫn sử dụng từng nhóm chức năng . Chức năng đã được thêm vào MySQL phiên bản 4.1. Bạn sẽ sử dụng GROUP BY FileID trong truy vấn.

Tôi không thực sự chắc chắn về cách bạn muốn kết quả trông như thế nào. Nếu bạn muốn mọi thuộc tính được liệt kê cho mọi mục (ngay cả khi không được đặt), thì sẽ khó hơn. Tuy nhiên, đây là gợi ý của tôi về cách thực hiện:

SELECT bt.FileID, Title, Author, 
 GROUP_CONCAT(
  CONCAT_WS(':', at.AttributeName, at.AttributeType, avt.AttributeValue) 
  ORDER BY at.AttributeName SEPARATOR ', ') 
FROM BaseTable bt JOIN AttributeValueTable avt ON avt.FileID=bt.FileID 
 JOIN AttributeTable at ON avt.AttributeId=at.AttributeId 
GROUP BY bt.FileID;

Điều này cung cấp cho bạn tất cả các thuộc tính theo cùng một thứ tự, điều này có thể hữu ích. Đầu ra sẽ như sau:

'F001', 'Dox', 'vinay', 'CustomAttr1:varchar(40):Akash, CustomUseDate:Datetime:2009/03/02'

Bằng cách này, bạn chỉ cần một truy vấn DB duy nhất và kết quả đầu ra rất dễ dàng để phân tích cú pháp. Nếu bạn muốn lưu trữ các thuộc tính dưới dạng Datetime thực, v.v. trong DB, bạn cần sử dụng SQL động, nhưng tôi muốn làm rõ điều đó và lưu trữ các giá trị trong varchars.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để khắc phục các sự cố thường gặp với cơ sở dữ liệu MySQL?

  2. Làm việc với Trigger trong Cơ sở dữ liệu MySQL - Hướng dẫn

  3. 2 cách chuyển đổi giữa hệ thập phân và hệ thập lục phân trong MySQL

  4. Laravel 5.4 trên PHP 7.0:Ngoại lệ PDO - Không thể tìm thấy trình điều khiển (MySQL)

  5. Những cách đã biết để lưu trữ cấu trúc cây trong DB quan hệ là gì?