MySQL 合并 2 个表中的一些数据

标签 mysql sql wordpress

我正在使用高级自定义字段开发一个 WordPress 网站,如果这有帮助的话。

我有两个表:postspostmeta

帖子

|-------------------------------------------|
|   ID    |   post_title    |   post_type   |
|    1    |     Title 1     |       book    |
|    2    |     Title 1     |      product  |
|    3    |     Title 2     |       book    |
|    4    |     Title 2     |      product  |
|    5    |     Title 3     |       book    |
|    6    |     Title 3     |      product  |
|-------------------------------------------|

发布元数据

|----------------------------------------------------------|
|   post_id       |   meta_key      |      meta_value      |
|        3        |     Rating      |            *****     |
|        3        |    Publisher    |     Julian Celestro  |
|        3        |       Date      |     April 16, 1840   |
|        3        |       Type      |          Hardback    |
|        3        |       Price     |          19.99       |
|        3        |       ISBN      |       1234567890     |
|----------------------------------------------------------|

当然,还有很多其他事情发生,但这些是相关的字段。

因此,在 posts 表中,有 3 本书,每本书都有一个图书 id# 和一个产品 id#。

postmeta 表通过将元键和值与帖子 ID 相关联,包含有关所有这些书籍和产品的信息。

有很多很多书,我需要一种方法来基本上组合这两个表。对于表 1 中的每个 post_title(书名),我想要与产品的 post_type (id = 2,4,6) 关联的 ID 号,并且我想将其与 postmeta 表连接起来。

例如,我想要一个返回结果的 MySQL 语句:

ID=4, post_title='Title 2', meta_key=rating, meta_value=*****
ID=4, post_title='Title 2', meta_key=Publisher, meta_value=Julian Celestro
ID=4, post_title='Title 2', meta_key=Date, meta_value=April 16, 1840
ID=4, post_title='Title 2', meta_key=Type, meta_value=Hardback
ID=4, post_title='Title 2', meta_key=Price, meta_value=19.99
ID=4, post_title='Title 2', meta_key=ISBN, meta_value=1234567890

我尝试了一些类似的事情

SELECT `postmeta`.*
FROM `posts` 
RIGHT JOIN `postmeta` ON posts.id = postmeta.post_id
WHERE `post_type` = 'book'

它(预期)给了我我想要的meta_key和meta_value,但它给了我书的post_id而不是产品。

最佳答案

添加另一个meta_key“product_id”,将meta_value设置为产品的ID,将post_id设置为书籍的ID。

然后查询:)

关于MySQL 合并 2 个表中的一些数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30585819/

相关文章:

Mysql查询某个字段中的组数据

mysql - 我们可以查询 "10 posts from every category in one request"吗?

sql - 从联合结果中选择 postgres

php - 更新后增加表单

mysql - 如何将 GROUP BY 与 HAVING 一起使用?

PHP 没有插入 MAMP phpmyadmin 上的数据库

sql - 更新文本列,在字符索引处添加/删除文本

php - WooCommerce:在订单中保存对产品的更改时 Hook

wordpress - 如何防止用户访问 wp admin 和 wp-login.php?

mysql 选择一个联合,其中一个中的值不会出现在另一个中