0

我在使用 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 

没有成功。任何形式的帮助将不胜感激。

4

3 回答 3

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
于 2012-11-21T14:22:23.577 回答
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)使其快速工作。

于 2012-11-21T14:18:15.990 回答
0

尝试这个::

SELECT  `etat` , COUNT(  'n_doss' ) 
FROM  `commentaire`  
GROUP BY  `etat`
于 2012-11-21T14:18:20.497 回答