这里是 SQL 菜鸟。从 WP 安装中的自定义表中提取一些数据,我想从 user_meta 和 users 表中获取用户信息。
生成的数组应如下所示。
array(
user_id => 1234,
user_email => [email protected]
first_name => foo
last_name => bar
)
我就是无法正确表达我的 CASE 陈述。
$query = $wpdb->prepare(
"SELECT s.user_id, u.user_email
FROM wp_user_stages s
INNER JOIN wp_users u ON s.user_id=u.ID
INNER JOIN wp_usermeta m ON s.user_id=m.user_id
CASE
WHEN m.met_key = 'first_name' THEN m.meta_value AS first_name
WHEN m.met_key = 'last_name' THEN m.meta_value AS last_name
END
WHERE
s.quest_comp = 0 AND
s.registered = %s
",
'2024-05-11'
);
$users = $wpdb->get_results($query, ARRAY_A);
我查看了各种手册并尝试了不同格式和不同位置的案例陈述。我以前用过它,但很久以前我只是不记得了。
将 sql 脚本更改为:
SELECT s.user_id, u.user_email,
CASE
WHEN m.met_key = 'first_name' THEN m.meta_value
ELSE ''
END AS first_name,
CASE
WHEN m.met_key = 'last_name' THEN m.meta_value
ELSE ''
END AS last_name
FROM wp_user_stages s
INNER JOIN wp_users u ON s.user_id=u.ID
INNER JOIN wp_usermeta m ON s.user_id=m.user_id
WHERE
s.quest_comp = 0 AND
s.registered = %s