Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用mysql和计数请求时出现问题_Php_Mysql_Sql - Fatal编程技术网

Php 使用mysql和计数请求时出现问题

Php 使用mysql和计数请求时出现问题,php,mysql,sql,Php,Mysql,Sql,我在使用mysql时遇到了一些麻烦,事实上我有一个如下格式的表: n_doss etat date etc... ----------------------------------- 145 N 20/10 145 EC 15/10 146 N 25/10 我想做的是让每个etat计算我有多少文件夹(文件夹由n\u doss标识) 问题在于,最后一个重要的etat是每个文件的最近一个

我在使用mysql时遇到了一些麻烦,事实上我有一个如下格式的表:

n_doss   etat     date       etc...
-----------------------------------
145        N      20/10
145        EC     15/10
146        N      25/10        
我想做的是让每个
etat
计算我有多少文件夹(文件夹由
n\u doss
标识)

问题在于,最后一个重要的
etat
是每个文件的最近一个

因此,我必须计算每个
etat
我有多少文件,但我不能计算每个
etat
的每个
n dos
,而只能计算最近的一个

我几乎什么都试过了,但我在这个问题上没有成功

我试过:

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 
没有成功。 任何形式的帮助都将不胜感激

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)
上创建一个索引,以便快速工作。

尝试以下方法:

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

您的表中有主键吗?是的,id是主键(它是自动递增的),但我也索引了上面给出的示例记录,您希望的输出是什么?每个
etat的计数
,但每个文件可以有许多记录,我只需要每个文件的最后一个
etat
date
COUNT('etat')
标识是错误的。单引号表示字符文字,而不是列名。您的表达式相当于计数(1)如果您没有任何条件,只需在此处剪切即可感谢@StanislasPiotrowski和Peterthanks的快速回复。实际上,此代码并没有返回我的
n_doss
per
etat
,谢谢您的快速回复。实际上,我在文件数量方面遇到了一些问题。实际上,如果在您的示例中有日期,则此请求也会计算文件数量。在您的示例中,它将3个文件计为总数,但应仅计为2个,因为它们是相同的文件,只是
etat
不同,我将尝试更正此问题。谢谢你的帮助
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