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

Truy vấn MySQL - Kết hợp dữ liệu dựa trên hai yếu tố, sau đó tùy chỉnh cách dữ liệu được sắp xếp dựa trên các giá trị

Select wp_users.ID
    , wp_users.user_login
    , wp_users.user_email
    , wp_users.user_nicename
    , Min( Case When wp_usermeta.meta_key = 'first_name' Then wp_usermeta.meta_value End ) As first_name
    , Min( Case When wp_usermeta.meta_key = 'last_name' Then wp_usermeta.meta_value End ) As last_name
    , Min( Case When wp_usermeta.meta_key = 'address' Then wp_usermeta.meta_value End ) As address
    , Min( Case When wp_usermeta.meta_key = 'dob' Then wp_usermeta.meta_value End ) As dob
From wp_user
    Join wp_usermeta
        On wp_usermeta.user_id = wp_user.ID
Where Exists    (
                Select 1
                From wp_usermeta As Meta1
                Where Meta1.user_id = wp_user.id
                    And Meta1.meta_key = 'wp_user_level' 
                    And Meta1.meta_value = '0' 
                )
        And wp_usermeta.meta_key In('first_name','last_name','address','dob')                   
Group By wp_users.ID
    , wp_users.user_login
    , wp_users.user_email
    , wp_users.user_nicename

Đầu tiên, như những người khác đã đề cập, một trong những lý do khiến truy vấn này rất khó viết là bạn đang phải sử dụng cấu trúc EAV. Khái niệm về bảng "meta" thực sự là một hậu quả cho thiết kế quan hệ. Thứ hai, để lấy thông tin từ EAV, bạn phải tạo cái được gọi là truy vấn chéo bảng trong đó bạn tạo các cột bạn muốn trong truy vấn của mình. Nói chung, cơ sở dữ liệu quan hệ không được thiết kế để tạo cột nhanh chóng như tôi đang làm trong giải pháp của mình và được yêu cầu cho EAV.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tạo bảng quan hệ trong mysql

  2. Gửi dữ liệu đến Cơ sở dữ liệu trong ứng dụng web React.js

  3. MySQL chuyển đổi kiểu dữ liệu cột từ VARCHAR sang INT

  4. Thứ tự hàng MySQL cho SELECT * FROM tên_bảng;?

  5. Không có tùy chọn để ánh xạ tên cột trong mô hình kích thước tiếp theo