我需要查询Wordpress数据库。

第一个表是wp_posts:我需要从该表中检索IDpost_content,其中post_title“A”“B”“C”。这当然很容易。

SELECT ID,post_content FROM `wp_posts`
WHERE post_title IN ("A","B","C") and post_type = "plugin_is_writing_this_record"


post_type是必需的,因为只有特定的Wordpress插件会使用该写入记录。

问题在于,同一个插件(用于发送表单的插件)会为我“删除”重要信息:post_type(通常在post_author中是创建帖子的用户的ID)不是发布表单的用户,但创建表单所在帖子的用户的ID。我需要检索发布表单的用户的ID。

使用wp_posts中帖子的ID,我可以从表wp_posts中获取用户的电子邮件。

如果以这种方式查询最后一个表:

SELECT * FROM `wp_postmeta` WHERE post_id = 277125 (*)


您以这种方式获取数据(我将数据减少了一点):

meta_id | post_id | meta_key            | meta_value
----------------------------------------------------------
3       | 277125  | _from_email         | from@mail.com
4       | 277125  | _field_your-surname | Surname
5       | 277125  | other_meta_key      | otherdata
6       | 277125  | ...                 | ...


在这一点上,我知道wp_postmeta元值与发布表单的用户的邮件有关(我甚至需要从该表中检索其他meta_keys,但这对于查询和此问题是有效的)。

包含我需要的_from_email和用户ID的表是email,这是第三个表。

是否可以在单个查询中一次查询三个表来检索我需要的数据?我尝试了一些JOINS,但无法使其正常工作。任何帮助表示赞赏。

(*)这是一个示例查询,我需要任何post_id,而不仅仅是一个

最佳答案

请尝试查询,

SELECT wp.ID,wp.post_content, wpm.*
FROM wp_posts wp
RIGHT JOIN wp_postmeta wpm ON wp.ID = wpm.post_id
WHERE
wp.post_title IN ("A","B","C")
AND wp.post_type = "plugin_is_writing_this_record";

10-07 19:16
查看更多