Mysql 基于内部选择联接仅统计唯一术语

Mysql 基于内部选择联接仅统计唯一术语,mysql,datatable,count,Mysql,Datatable,Count,我试图将唯一的术语作为总计数 这是原始查询,工作正常 ->select('DISTINCT search_tags.term AS t_name, nbr', FALSE) ->from('search_tags LEFT JOIN (SELECT term AS tk, COUNT(search_tags.term) AS nbr FROM search_tags GROUP BY search_tags.term) AS TR ON search_tags

我试图将唯一的术语作为总计数

这是原始查询,工作正常

->select('DISTINCT search_tags.term AS t_name, nbr', FALSE)        
    ->from('search_tags LEFT JOIN (SELECT term AS tk, COUNT(search_tags.term) AS nbr FROM search_tags GROUP BY search_tags.term) AS TR ON search_tags.term = TR.tk ')
    ->where('search_tags.dt_added >=', '2011-08-01 09:48:54') 
    ->where('search_tags.dt_added <=', '2011-09-02 09:48:54');

// returns: [twitter,12],[facebook,6].....
问题是,此代码运行datatable.net,因此datatable将删除select行并将其更改为:

SELECT COUNT(*) AS numrows
FROM (search_tags LEFT JOIN (SELECT term AS tk, COUNT(search_tags.term) AS nbr FROM search_tags     GROUP BY search_tags.term) AS TR ON search_tags.term = TR.tk)
WHERE `search_tags`.`dt_added` >= '2011-08-01 09:48:54'
AND `search_tags`.`dt_added` <= '2011-09-02 09:48:54'

// returns the same  [twitter,12],[facebook,6]..... BUT the pagination is broken.
因此datatable可以计算行数并将其用作分页参数

但是当它删除select时,它会得到所有行,因为DISTINCT不再存在

我睡眠不足,所以我永远都在尝试和犯错。请帮我把lol:P

整理好

->select('DISTINCT st5.term AS t_name, n_ocurrences', FALSE)        
    ->from("search_tags AS st4 
    RIGHT OUTER JOIN (SELECT DISTINCT st.term, n_ocurrences  
    FROM search_tags AS st 
    JOIN 
    (SELECT term AS n_term, COUNT(term) AS n_ocurrences 
    FROM search_tags AS st2 
    GROUP BY st2.term)
    AS st3 ON st3.n_term = st.term  
    WHERE st.dt_added >= '$min' 
    AND st.dt_added <= '$max')  AS st5 ON st5.term = 1");  
必须添加一些初始选择以检索正确的金额。 现在我需要在$min、$max下计算唯一的n_ocurrences,因为n_ocurrences只返回总计数