【问题标题】:MySQL joined query count returning a row for each resultMySQL连接查询计数为每个结果返回一行
【发布时间】:2012-07-17 13:08:54
【问题描述】:

所以,我正在执行一个自定义 wordpress 查询来拉取事件(事件存储在自定义字段(元数据)中,因此需要 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

【问题讨论】:

    标签: mysql sql wordpress group-by left-join


    【解决方案1】:

    只需删除 GROUP BY 子句

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多