我想从 wp_users 和 wp_usermeta 表创建一个视图,以便我可以从外部应用程序查询视图中的行。基本身份验证详细信息存储在 wp_users 中(例如,用户名、密码、电子邮件、id),其他字段存储在 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 的数据和 u1.id = m1.userid 所在的行?