Получите идентификаторы продуктов по _sale_price_dates_to, за исключением orig_offer_product_id до 2 недель в Woocommerce - PullRequest
0 голосов
/ 28 ноября 2018

Я использую woocommerce и предлагаю для woocommerce.И я хочу получить идентификаторы продуктов без предложений.Я подготовил код, но он не работает :( Я попытался во втором запросе: SELECT отдельный (wp_postmeta.meta_value) ..., но он тоже не работает.

$draftid = $wpdb->get_col('SELECT wp_posts.ID FROM ' . $wpdb->postmeta . ' join ' . $wpdb->posts . ' ON wp_posts.ID = wp_postmeta.post_id 
WHERE wp_posts.post_status="draft" and wp_postmeta.meta_key="_sale_price_dates_to" and wp_postmeta.meta_value != "" and wp_postmeta.meta_value<="' . (time()-1296000) . '"  
EXCEPT SELECT wp_postmeta.meta_value FROM ' . $wpdb->postmeta . ' join ' . $wpdb->posts . ' ON wp_posts.ID = wp_postmeta.post_id
WHERE wp_postmeta.meta_key="orig_offer_product_id" and wp_postmeta.meta_value !="" and wp_posts.post_type="woocommerce_offer"'); print_r($draftid);

Но отдельнопервый запрос работает, и второй тоже. Если я использую 'union' вместо 'кроме', он тоже работает.

Есть идеи почему?

1 Ответ

0 голосов
/ 29 ноября 2018

Попробуйте следующее без каких-либо гарантий:

global $wpdb;

$draft_id = $wpdb->get_col("
    SELECT p.ID 
    FROM {$wpdb->prefix}posts as p
    JOIN {$wpdb->prefix}postmeta as pm ON p.ID = pm.post_id 
    WHERE p.post_status = 'draft' 
    AND pm.meta_key = '_sale_price_dates_to' 
    AND pm.meta_value ! = '' 
    AND pm.meta_value <= " . (time()-1296000) . "
    AND p.ID NOT IN (
        SELECT p2.ID 
        FROM {$wpdb->prefix}posts as p2
        JOIN {$wpdb->prefix}postmeta as pm2  ON p2.ID = pm2.post_id 
        AND pm2.meta_key = 'orig_offer_product_id' 
        AND pm2.meta_value ! = ''
        AND p2.post_type = 'woocommerce_offer'
    )
"); 

print_r($draft_id);

Надеюсь, это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...