0

mysqlの使用中に問題が発生しました。実際、次のような形式のテーブルがあります。

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

私がやりたいのは、それぞれetatが私が持っているフォルダーの数を数えることです(フォルダーはによって識別されますn_doss)。

問題は、重要な最後のetatものが各ファイルの最新のものであるということです。

そのため、ファイルの数を数える必要がありますが、それぞれをetat数えることはできませんが、最新のものだけを数えることができます。etatn_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 に答える