0

そのため、イベントをプルするカスタム ワードプレス クエリを実行しており (イベントはカスタム フィールド (メタデータ) に格納されるため、JOIN が必要です)、返された行の数を取得したいと考えています。私の問題は、返された各投稿 ID に対するカウントを含む一連の行が返されることです。

私のクエリは次のようになります。

SELECT count(*)
FROM   wp_posts AS wposts 
   LEFT JOIN wp_postmeta AS metafeatured 
          ON wposts.id = metafeatured.post_id 
   LEFT JOIN wp_postmeta AS metastart 
          ON wposts.id = metastart.post_id 
   LEFT JOIN wp_postmeta AS metaend 
          ON wposts.id = metaend.post_id 
   LEFT JOIN wp_term_relationships 
          ON ( wposts.id = wp_term_relationships.object_id ) 
   LEFT JOIN wp_term_taxonomy 
          ON ( wp_term_relationships.term_taxonomy_id = 
               wp_term_taxonomy.term_taxonomy_id ) 
WHERE  wposts.post_type = 'll_events' 
   AND wposts.post_status = 'publish' 
   AND ( ( ( metastart.meta_key = 'll_events_startdate' 
             AND Cast(metastart.meta_value AS UNSIGNED) < 1342997940 ) 
           AND ( metaend.meta_key = 'll_events_enddate' 
                 AND Cast(metaend.meta_value AS UNSIGNED) > 1342525664 ) ) 
          OR ( ( metastart.meta_key = 'll_events_startdate' 
                 AND Cast(metastart.meta_value AS UNSIGNED) <= 1342997940 ) 
               AND ( metaend.meta_key = 'll_events_enddate' 
                     AND Cast(metaend.meta_value AS UNSIGNED) >= 1342525664 
                   ) ) 
          OR ( ( metastart.meta_key = 'll_events_startdate' 
                 AND Cast(metastart.meta_value AS UNSIGNED) BETWEEN 
                     1342525664 AND 1342997940 
                   ) 
               AND ( metastart.meta_key = 'll_events_enddate' 
                     AND Cast(metaend.meta_value AS UNSIGNED) BETWEEN 
                         1342525664 AND 1342997940 
                   ) ) 
          OR ( ( metastart.meta_key = 'll_events_startdate' 
                 AND Cast(metastart.meta_value AS UNSIGNED) BETWEEN 
                     1342525664 AND 1342997940 
                   ) 
               AND ( metaend.meta_key = 'll_events_enddate' 
                     AND Cast(metaend.meta_value AS UNSIGNED) <= 1 ) ) ) 
GROUP BY wposts.ID, metastart.post_id, metaend.post_id, wp_term_relationships.object_id
ORDER BY metastart.meta_value ASC 

グループ、カウントなどの組み合わせをたくさん試しましたが、期待される結果 (「カウント」を含む結果セット内の単一の行) を取得できません。代わりに、私の結果セットは次のようになります。

count(*)
24
30
30
30
12
16
1

...など、必要な場合:

count(*)
139
4

1 に答える 1

1

GROUP BY句を削除するだけです

于 2012-07-17T13:10:20.343 に答える