WordPress SELECT与JOIN无法正常工作

时间:2015-08-20 14:19:41

标签: mysql wordpress-plugin wordpress-theming wordpress

正在使用 WORDPRESS 插件,我需要所有产品详细信息,该网站使用 woocommerce 插件, woocomerce 将产品存储为帖子和product meta存储(分布)在许多其他表中。无论如何, 必须获取所有产品(和相关详细信息) 。我用Google搜索并在下面找到了查询。它似乎对其他人有用,但我无法使其发挥作用。

global $wpdb;
    $sql = "SELECT 
                    p.id, 
                    p.post_title, 
                    p.guid, 
                    p.post_type, 
                    m.meta_key, 
                    m.meta_value, 
                    meta_sp.meta_value as sale_price, 
                    meta_ap.meta_value as additional_price
            FROM wp_posts p
            INNER JOIN wp_postmeta m
            INNER JOIN wp_postmeta meta_sp ON p.id=meta_sp.post_id 
                AND meta_sp.meta_key='sale_price'
            INNER JOIN wp_postmeta meta_ap ON p.id=meta_ap.post_id 
                AND meta_ap.meta_key='additional_price'
            WHERE p.id=m.post_id
            AND m.meta_key='_rentable' AND m.meta_value='yes'";

        $results = $wpdb->get_results($sql);
        var_dump($results);

Result :  array (size=0) empty.

任何人都可以告诉我如何使上述查询工作,或者可能方式获取网站db中的所有产品

1 个答案:

答案 0 :(得分:2)

您错过了ON,试试这个:

SELECT 
    p.id, 
    p.post_title, 
    p.guid, 
    p.post_type, 
    m.meta_key, 
    m.meta_value, 
    meta_sp.meta_value as sale_price, 
    meta_ap.meta_value as additional_price
FROM wp_posts p
INNER JOIN wp_postmeta m ON p.id=m.post_id 
INNER JOIN wp_postmeta meta_sp ON p.id=meta_sp.post_id 
    AND meta_sp.meta_key='sale_price'
INNER JOIN wp_postmeta meta_ap ON p.id=meta_ap.post_id 
    AND meta_ap.meta_key='additional_price'
WHERE p.id=m.post_id
AND m.meta_key='_rentable' AND m.meta_value='yes'