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.