使用我的第一个WP插件/学习工作中的项目的SQL。
我正在使用mySQL 5.5并计划通过PHP中的$ wpdb-> query()函数运行以下代码,尽管我现在直接在phpMyAdmin中进行测试。
我正在尝试创建一个表,它结合并简化了wp_usermeta表和另一个插件(buddypress)中的信息,以创建一个表,然后我可以拉出创建由不同字段(名称,位置,点)组织的用户报告。 / p>
根据同事的建议,我已经制作了一个新表来整合数据。
CREATE TABLE new_table(
user_id varchar(255),
first_name varchar(255),
last_name varchar(255),
points varchar(255),
location varchar(255)
然后我将使用wp_usermeta表中的值进行更新。如果您不知道用户元表如下所示:
| umeta_id | user_id | meta_key | meta_value |
| 1 | 20 | last_name | Doe |
| 2 | 20 | FIRST_NAME |约翰|
| 3 | 20 |点| 500 |
| 4 | 33 | last_name |污垢|
| 5 | 33 | FIRST_NAME |乔|
| 3 | 33 |点| 800 |
然后是具有类似结构的buddypress表。
| id | field_id | user_id |价值|
| 1 | 1 | 20 |纽约|
| 2 | 2 | 20 |蓝色|
| 3 | 1 | 33 |伦敦|
| 4 | 2 | 33 |红色|
user_id字段标识用户并且在表之间是相同的,但表不会相互引用。
所以我试图使用这段代码
INSERT INTO new_table( user_id, last_name )
SELECT user_id, meta_value
FROM wp_usermeta
WHERE meta_key = 'last_name';
UPDATE new_table
SET first_name = wp_usermeta.meta_value
WHERE new_table.user_id = wp_usermeta.user_id
AND wp_usermeta.meta_key = 'first_name';
在'where子句'中返回“未知列'wp_usermeta.user_id'”
我找到了有关UPDATE说要在列中添加引号的建议。像
UPDATE new_table
SET first_name = "wp_usermeta.meta_value"
WHERE new_table.user_id = "wp_usermeta.user_id"
AND "wp_usermeta.meta_key" = 'first_name';
这将无错误地运行,但first_name列仍为NULL。
有什么建议吗?
答案 0 :(得分:0)
这解决了这个问题。
UPDATE new_table as table
SET first_name = (
SELECT meta_value
FROM wp_usermeta
WHERE table.user_id = wp_usermeta.user_id
AND wp_usermeta.meta_key = 'first_name');