2016-04-25 14 views
0

こんにちは私はmeta_keyのようなステータスと未配置のようなmeta_valueを持つクエリを実行する必要があり、同じ投稿はissue_dateのようなmeta_keyと2日間の日付のようなmeta_valueを持っています。例えば、私はこのようなテーブルを持っている:私はワードプレスでサブクエリを行うにはどうすればいいですか?

id_meta post_id meta_key meta_valuue 
     1  1 status  Unplaced 
     2  1 issue_date 20160428 
     3  2 status  VIP 
     4  2 issue_date 20160428 
     5  3 status  Placed 
     6  3 issue_date 20160427 
     7  4 status  Unplaced 
     8  4 issue_date 20160420 

私は唯一つのポストがステータス未配置持ち、21と28の間issue_dateは私が書いたクエリがあるため、クエリのみ1を返すことにしたい:

$results = $wpdb->get_var(" 
SELECT COUNT(*) 
    FROM wp_posts 
    , wp_postmeta 
WHERE meta.key = 'status' 
    AND meta_value LIKE '%Unplaced%' 
    AND post_id = ID 
    AND post_status <> 'trash' 
    AND post_id IN (SELECT post_id 
         FROM wp_postmeta 
        WHERE meta_key = 'issue_date' 
         AND meta_value >= '20160421' 
         AND meta_value <= '20160428') 
"); 

投稿はごみ箱に入れないようにする必要があります。

ありがとうございます!

答えて

0

例:

SELECT s.post_id 
    , s.meta_value status 
    , i.meta_value issue_date 
    FROM wp_posts s 
    JOIN wp_posts i 
    ON i.post_id = s.post_id 
WHERE s.meta_key = 'status' 
    AND s.meta_value = 'Unplaced' 
    AND i.meta_key = 'issue_date' 
    AND i.meta_value BETWEEN '20160421' AND '20160428'; 
1

あなたはmeta_queryの引数を構築し、DATEは、と比較値BETWEENのフォーマットYYYY-MM-DDにする必要があります。この

$args = array(
    'meta_query' => array(
     array(
      'key'  => 'status', 
      'value' => 'Unplaced', 
      'compare' => '=', 
     ), 
     array(
      'key' => 'issue_date', 
      'value' => array('2016-04-21', '2016-04-28'), 
      'type' => 'date', 
      'compare' => 'BETWEEN', 
     ), 
    ), 
); 
$query = new WP_Query($args); 

//Then get count like this 
$query->found_posts; 

タイプのようWP_Queryに渡すことができます作業。

WP_Query hereについてもっと知ろ約$found_postshere

関連する問題