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
Първо, както други споменаха, една от причините тази заявка да е толкова тромава за писане е, че трябва да използвате EAV структура. Концепцията за "мета" таблица е наистина анатема за релационния дизайн. Второ, за да извлечете информация от EAV, трябва да създадете това, което се нарича кръстосана заявка, където изграждате колоните, които искате във вашата заявка. Като цяло релационните бази данни не са предназначени за генериране на колони в движение, както правя в моето решение и е необходимо за EAV.