我正在使用高级自定义字段在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 |
|-------------------------------------------|
发布Meta
|----------------------------------------------------------|
| 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 |
|----------------------------------------------------------|
当然还有其他一些事情发生,但这些都是相关的领域。
所以在帖子表中,有3本书,每本书都有一个书籍编号#和一个产品编号#。
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而不是产品。
答案 0 :(得分:0)
添加另一个meta_key'product_id',将meta_value设置为产品的ID,将post_id设置为图书的ID。
然后查询:)
答案 1 :(得分:0)
我认为你的意思是这样的
SELECT p.ID, p.post_title, pm.meta_key, pm.meta_value
FROM `posts` AS p
RIGHT JOIN `postmeta` AS pm ON p.id = pm.post_id
WHERE `post_type` = 'book'
<强>输出强>
ID post_title meta_key meta_value
3 Title 2 Rating *****
3 Title 2 Publisher Julian Celestro
3 Title 2 Date April 16, 1840
3 Title 2 Type Hardback
3 Title 2 Price 19.99
3 Title 2 ISBN 1234567890