我正在使用高级自定义字段开发一个 WordPress 网站,如果这有帮助的话。
我有两个表:posts
和 postmeta
帖子
|-------------------------------------------|
| 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/