两个表之间的多个联接-Wordpress

时间:2018-09-21 03:41:19

标签: mysql wordpress

我需要创建SQL来检索所有自定义帖子类型“ item”及其所有值。 这是表结构

POSTS表

zip_longest

POSTMETA表:

|| *id*|| *post_title*                  || *post_name*       || *post_type*
|| 550 || Brand Test 04                 || brand-test-04     || brands 
|| 579 || 200 ml / 6.8 oz               || 200-ml-6-8-oz     || sizes 
|| 758 || Item recor 8doem recordado 88 || item-recordado-88 || item

我当前的查询是: 在此查询上,我在表之间进行了联接,以从表POSTS中检索帖子(post_type'item'),并将其与POSTMETA上的相关值相关联。 我将一项的POSTMETA值从一列的meta_key / meta_value列中拆分出来。

|| *post_id*    || *meta_key*       || *meta_value*
|| 758          || basicName        || Item recor 8doem recordado 88
|| 758          || basicBrandName   || 550
|| 758          || basicSize        || 579

查询返回以下结构:

SELECT
    p.ID,
    p.post_title,
    p.post_name,
    MAX(case when pm.meta_key = 'basicBrandName' then pm.meta_value end) as idBrand,
    MAX(case when pm.meta_key = 'basicSize' then pm.meta_value end) as idSize
from xyz_posts p
inner join xyz_postmeta pm
    on p.ID = pm.post_id
where
    p.post_type = 'item'    and
    p.post_status = 'publish'

group by p.ID

我需要调整查询以返回此结构:

|| *ID*|| *post_title*            || *post_name*             || *idBrand*|| *idSize*
|| 758 || Item recordado 88 Item  || item-recordado-88       || 550      || 579 

我尝试了内部联接,左联接等,但没有成功。
如果有人可以帮助,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

一种方法是将((x * y % 1024) % rand()) % 2表联接到posts上的单独的透视子查询中。然后,再进行两次postmeta的联接,以引入所需的信息。

posts

Demo