0
SELECT b.post_title
     , a.post_id
     , Deriv1.Count
FROM  wp_posts b
    , wp_postmeta a
LEFT OUTER JOIN (    
   SELECT meta_value, COUNT( * ) AS Count
   FROM  wp_postmeta
   GROUP BY meta_value
   ) Deriv1 
ON a.post_id = Deriv1.meta_value
WHERE a.meta_value = 1
  AND a.meta_key = 'type-select' 
  AND b.post_status = 'publish'
  and post_type = 'car-cc'

の現在の問題はSQl STATEMENT、私が供給するとき、meta_value =1それがすべての値をフェッチしていることです。つまりpost_id、持っていない値meta_value =1もリストされています。

http://sqlfiddle.com/#!2/1115a7/1

4

1 に答える 1

2

問題は、wp_postsテーブルとwp_postmetaテーブルに参加していないことだと思います。これをWHERE句に追加します。

AND a.post_id = b.ID

または、2つのテーブルで内部結合を実行します。

SELECT b.post_title
     , a.post_id
     , Deriv1.Count
FROM  wp_posts b INNER JOIN 
        wp_postmeta a ON a.post_id = b.ID
LEFT OUTER JOIN (    
   SELECT meta_value, COUNT( * ) AS Count
   FROM  wp_postmeta
   GROUP BY meta_value
   ) Deriv1 
ON a.post_id = Deriv1.meta_value
WHERE a.meta_value = 1
  AND a.meta_key = 'type-select' 
  AND b.post_status = 'publish'
  and post_type = 'car-cc'

ところで-各グループのカウントが必要でしたか?その場合、クエリを簡略化できます。

SELECT b.post_title, a.post_id, COUNT( * ) as Total
FROM  wp_posts b INNER JOIN 
            wp_postmeta a ON a.post_id = b.ID
    WHERE a.meta_value = 1
      AND a.meta_key = 'type-select' 
      AND b.post_status = 'publish'
      and post_type = 'car-cc'
GROUP BY b.post_title, a.post_id

これが更新されたフィドルです。希望する出力がわかりませんでした。

幸運を。

于 2013-01-26T05:51:42.607 に答える