Php 使用mysql和计数请求时出现问题
我在使用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是每个文件的最近一个
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`
etat的计数
,但每个文件可以有许多记录,我只需要每个文件的最后一个etat
由date
COUNT('etat')
标识是错误的。单引号表示字符文字,而不是列名。您的表达式相当于计数(1)如果您没有任何条件,只需在此处剪切即可感谢@StanislasPiotrowski和Peterthanks的快速回复。实际上,此代码并没有返回我的n_doss
peretat
,谢谢您的快速回复。实际上,我在文件数量方面遇到了一些问题。实际上,如果在您的示例中有日期,则此请求也会计算文件数量。在您的示例中,它将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