首页 文章

MySQL组合了2个表中的一些数据

提问于
浏览
0

我正在使用高级自定义字段在WordPress网站上工作,如果这有帮助的话 .

我有两张 table : postspostmeta

Posts

|-------------------------------------------|
|   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 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号(id = 2,4,6),我想将其与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而不是产品 .

2 回答

  • 0

    添加另一个meta_key'product_id',将meta_value设置为产品的ID,将post_id设置为book的ID .

    然后查询:)

  • 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'
    

    Output

    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
    

相关问题