Пользователи Wordpress и usermeta — объединение нескольких строк в одной таблице с одной строкой в ​​другой таблице

Я хочу создать представление из обеих таблиц wp_users и wp_usermeta, чтобы я мог запрашивать строки в представлении из внешнего приложения. Основные данные аутентификации хранятся в wp_users (например, имя пользователя, пароль, адрес электронной почты, идентификатор) и другие поля хранятся в виде пар ключ/значение в таблице wp_usermeta.

таблица wp_users имеет следующую структуру:

id | login | password | email
-----------------------------
1  | bsmith| abc123   | b@foo.com
2  | jjones| def456   | k@bah.com

таблица wp_usermeta имеет следующую структуру:

id | user_id | meta_key | meta_value
------------------------------------
1  | 1       | firstname| bob
2  | 1       | lastname | smith
3  | 1       | country  | denmark
4  | 2       | firstname| jan
5  | 2       | lastname | jones
6  | 2       | country  | germany

] Я хочу получить такие данные в виде MYSQL VIEW:

id | login | password | email    | firstname | lastname | country
-----------------------------------------------------------------
1  | bsmith| abc123   | b@foo.com| bob       | smith    | denmark
2  | jjones| def456   | k@bah.com| jan       | jones    | germany

Я знаю, что мне нужно сделать хотя бы внутреннее соединение между wp_users и wp_usermeta, однако мне также нужно выполнить подзапрос внутри wp_usermeta, чтобы соединить эти строки вместе

Запрос, который у меня есть для получения пользовательской строки, конечно, очень прост:

select u1.id, u1.login, u1.password, u1.email from wp_users u1

У меня есть запрос для получения мета в виде строки:

select m1.user_id, m1.meta_value as firstname, m2.meta_value as lastname, m3.meta_value as country
from wp_usermeta m1
join wp_usermeta m2 on (m1.user_id = m2.user_id and m2.meta_key = 'last_name')
join wp_usermeta m3 on (m2.user_id = m3.user_id and m3.meta_key = 'country')
where m1.meta_key = 'first_name'

Итак, как мне соединить эти два запроса вместе — u1's данные и строку, где u1.id = m1.userid?

16
задан frumbert 24 May 2012 в 03:46
поделиться