2012-07-17 100 views
0

所以,我正在做一个自定义的wordpress查询拉事件(事件存储在自定义字段(元数据),因此需要JOIN),我想得到一个返回的行数。我的问题是,我得到一堆返回的行,每行都包含针对每个返回的帖子ID的计数。MySQL加入查询计数为每个结果返回一行

我的查询看起来有点像这样:组的组合

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 

回答