使用mysql和count请求时遇到麻烦

时间:2012-11-21 14:13:35

标签: php mysql sql

我在使用mysql时遇到了一些麻烦,事实上我有一个像这样的表:

n_doss   etat     date       etc...
-----------------------------------
145        N      20/10
145        EC     15/10
146        N      25/10        

我想要做的是为每个etat计算我有多少文件夹(文件夹由n_doss标识)。

麻烦的是,最重要的etat是每个文件的最新版本。

所以我必须计算每个etat我有多少文件,但我不能计算每个etat的每个n_doss,而只计算最近的文件。

我几乎尝试过所有事情,但我无法在此查询中取得成功。

我试过了:

SELECT  `etat` , `n_doss`, COUNT(  'etat' ) 
FROM  `commentaire` WHERE  
GROUP BY  `etat` 

这与我尝试的方法无关。

我也试过

SELECT `etat` , `n_doss`, COUNT(  'etat' ) 
FROM  `commentaire`   
GROUP BY  `n_doss`
HAVING max(date) with 
是的,没有成功。 任何形式的帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

SELECT  c.*, cnt
FROM    (
        SELECT  etat, COUNT(*) AS cnt
        FROM    commentaire
        GROUP BY
                etat
        ) cd
JOIN    commentaire c
ON      c.id =
        (
        SELECT  id
        FROM    commentaire ci
        WHERE   ci.etat = cd.etat
        ORDER BY
                date DESC, id DESC
        LIMIT 1
        )

(etat, date, id)上创建一个索引,以便快速工作。

答案 1 :(得分:1)

SELECT  a.*, c.totalCOunt
FROM    commentaire a
        INNER JOIN
        (
            SELECT etat, MAX(date) maxDate
            FROM commentaire
            GROUP BY etat
        ) b ON a.etat = b.etat AND
                a.date = b.maxDate
        INNER JOIN
        (
            SELECT etat, COUNT(*) totalCOunt
            FROM commentaire
            GROUP BY etat
        ) c ON a.etat = c.etat

答案 2 :(得分:0)

试试这个::

SELECT  `etat` , COUNT(  'n_doss' ) 
FROM  `commentaire`  
GROUP BY  `etat`