php - 如何从两个表构建表,一个具有无用的唯一标识符(WordPress wp_usermeta 表)

标签 php mysql wordpress

用例背景:我正在使用 WordPress 网站来管理成员(member)资格,我 PC 上的 ID Card 软件将连接到一个表格以生成其信息。它可以连接到一个表。

目标:我需要一个名为“id_card”的表,其中包含列(member_number、first_name、last_name、exp_date),并且填充了上个月内修改过的用户(“membership” “表中有一个标题为“moddate”的列,我可以将其用作条件)。

挑战 1:我需要从表“membership”中提取 exp_date,其他值——member_number、first_name、last_name——都来自名为“wp_usermeta”的表(默认表WordPress)。两个源表都包含 user_id 以将信息关联到同一用户帐户。我相信这需要某种LEFT JOIN,但我无法让它工作。

挑战 2:更大的挑战:wp_usermeta 表包含 ROWS 而不是 COLUMNS 中的所有不同用户属性。因此,这些列的标题为“user_id、meta_key、meta_value”,单个用户可能有 30 行。如果我想选择用户 49 的名字,它看起来像这样:

SELECT meta_value FROM wp_usermeta WHERE user_id=49 AND meta_key='first_name'

问题:我该如何编写此查询,以便它将INSERT INTO 表“id_card”两个表中的值,使用 user_id 使其全部排列向上,尤其是当我不能单独使用 user_id 作为唯一标识符时(即,我知道将其缩小到某人的名字的唯一方法是使用两者他们的 user_id和 wp_usermeta 表中的 meta_key)?

最佳答案

您要复制数据存在重大问题。如果用户更改了他们的数据,那么您的副本将过时。如果您查看 wp_users 表,则会有一个 ID 字段。这里指向wp_usermeta表中的相关条目(user_id)

SELECT `wp_users`.*
    , `wp_usermeta`.*
FROM `wp_users`
    INNER JOIN `wp_usermeta` ON (`wp_users`.`ID` = `wp_usermeta`.`user_id`)
WHERE ID=1;

现在这将返回多行。如果你想要一条记录,那么你需要做

SELECT`wp_users`.*
    , (SELECT meta_key FROM wp_usermeta WHERE meta_key='wp_user_level' AND user_id=1) AS user_level
    , (SELECT meta_key FROM wp_usermeta WHERE meta_key='show_syntax_highlighting' AND user_id=1) AS syntax_highlighting
FROM `wp_users`
 WHERE ID=1;

只需重复子查询语句以获得您想要返回的尽可能多的信息。子查询只能返回一个值。

关于php - 如何从两个表构建表,一个具有无用的唯一标识符(WordPress wp_usermeta 表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56572546/

相关文章:

php - 匹配 {@layout=xxx} 的正则表达式

php - SQL更新大量行

php - wordpress 将多个回调函数添加到来自不同插件的单个 ajax 操作

mysql - 将 php 脚本转换为使用 mysql 中的 microsoft sql

php - YouTube链接到iframe?

javascript - 我想继续存储和显示从 mysql 获得的结果

php - 音频播放器 : Load random song from database table without repeating

php - 如何获取Mysql中所有卷的总和?

css - 如何在wordpress的 Logo 右侧放置文本?

javascript - 尝试在 WordPress 的新页面上添加事件类。