我需要查询Wordpress数据库。
第一个表是wp_posts
:我需要从该表中检索ID
和post_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";