我确信这些问题之前已经得到解答,但我不知道该搜索什么。
我有2个表(来自Wordpress),用户和用户元数据。我需要创建一个获取元数据的查询,并将其包含在其他用户数据中。我正在开发MS Access中将使用WP数据的独立解决方案,因此我不能使用任何Wordpress特定功能。
基本上,我需要采用这两个表:
user_id | username
-------------------
01 | bob24
02 | james112
meta_id | user_id | meta_key | meta_value
-----------------------------------------
01 | 01 | first_name | Bob
02 | 01 | last_name | Smith
03 | 02 | first_name | James
04 | 02 | last_name | Jones
把它变成这个:
user_id | username | first_name | last_name
-----------------------------------------
01 | bob24 | Bob | Smith
02 | james112 | James | Jones
我确信这有一个词,但我不知道它叫什么。有人能指出我正确的方向吗?
谢谢!
答案 0 :(得分:1)
非常感谢@GolezTrol指出我正确的方向。我确实需要转动数据。我搜索和Access有这个功能。我创建了一个“交叉表查询”。如果其他人遇到同样的问题,这是查询。
TRANSFORM Last(meta.meta_value) AS LastOfmeta_value
SELECT meta.[user_id], Last(meta.[umeta_id]) AS [Total Of umeta_id]
FROM meta
GROUP BY meta.[user_id]
PIVOT meta.[meta_key];
答案 1 :(得分:0)
您可能正在寻找数据透视表,这是MySQL中一个缓慢而复杂的过程。 如果您想了解更多相关信息,可以阅读this question。
但是,由于你似乎只有两个字段,也许连接对你来说很合适。 要使用连接执行此操作,请将元表连接两次。一次是名字,一次是姓:
select
u.user_id,
u.username,
fn.meta_value as first_name,
ln.meta_value as last_name
from
User u
left join Meta fn on fn.user_id = u.user_id and fn.meta_key = 'first_name'
left join Meta ln on ln.user_id = u.user_id and ln.meta_key = 'last_name'
如果您只想拥有确实拥有姓氏的用户,可以将联接更改为内部联接,这也可能稍快一些。
答案 2 :(得分:-1)
假设您有两个包含meta和user
的表名SELECT username
, meta.meta_value
, user_id
FROM user
INNER JOIN WHERE user.user_id = meta.user_id;