MySQL请求计数问题

MySQL请求计数问题,mysql,sql,count,group-by,Mysql,Sql,Count,Group By,我想计算上个月在每个诊所就诊的患者数量,因此我使用了以下请求: SELECT dispensaire.IdDisp, COUNT(SELECT consultation.NumDossier FROM consultation WHERE consultation.Date IN (SELECT consultation.Date FROM consultation

我想计算上个月在每个诊所就诊的患者数量,因此我使用了以下请求:

SELECT dispensaire.IdDisp, 
 COUNT(SELECT consultation.NumDossier 
       FROM consultation 
       WHERE consultation.Date IN (SELECT consultation.Date 
                                   FROM consultation 
                                   WHERE consultation.Date BETWEEN (CURRENT_DATE( ) - INTERVAL 1 MONTH) AND CURRENT_DATE( ))) 
FROM dispensaire, medecin, consultation 
WHERE dispensaire.IdDisp=medecin.IdDisp 
  AND medecin.IdDisp.consultation.IdDisp 
GROUP BY dispensaire.IdDisp

我找不到我的请求有什么不对!谢谢

您在下一行有一个输入错误-两列之间缺少等号:

AND medecin.IdDisp.consultation.IdDisp
线路应为:

AND medecin.IdDisp = consultation.IdDisp
我可能建议您将查询重写为类似这样的内容,在表上使用JOIN语法,而不是
WHERE
子句中的JOIN:

SELECT d.IdDisp, 
 COUNT(c.NumDossier)
FROM dispensaire d
INNER JOIN medecin m
    ON d.IdDisp = m.IdDisp 
INNER JOIN consultation c
    ON m.IdDisp = c.IdDisp
WHERE c.Date BETWEEN (CURRENT_DATE( ) - INTERVAL 1 MONTH) AND CURRENT_DATE( ))
GROUP BY d.IdDisp

您在下一行有一个输入错误-两列之间缺少等号:

AND medecin.IdDisp.consultation.IdDisp
线路应为:

AND medecin.IdDisp = consultation.IdDisp
我可能建议您将查询重写为类似这样的内容,在表上使用JOIN语法,而不是
WHERE
子句中的JOIN:

SELECT d.IdDisp, 
 COUNT(c.NumDossier)
FROM dispensaire d
INNER JOIN medecin m
    ON d.IdDisp = m.IdDisp 
INNER JOIN consultation c
    ON m.IdDisp = c.IdDisp
WHERE c.Date BETWEEN (CURRENT_DATE( ) - INTERVAL 1 MONTH) AND CURRENT_DATE( ))
GROUP BY d.IdDisp

我去格式化这个查询,格式化程序爆炸了。@FreshPrinceOfSO那是因为有一个
浮动在你周围,你得到的是一个错误还是结果不是预期的?where子句中的第二个和第二个似乎缺少一个=。也许您的意思是
和medecin.idDisp=consultation.idDisp
在select子句和旧语法中嵌套查询……格式化程序无法理解这一点@Ziko-此查询需要相当多的时间才能运行。MYSQL使用这种语法的表现非常糟糕。选择行应为dispensaire.IdDisp,count(*)……子查询逻辑的其余部分应位于where语句中。(蓝脚怪击败我回答)非常感谢大家:)我去格式化这个查询,格式化程序爆炸了。@FreshPrinceOfSO那是因为有一个
浮动在你周围,你是得到了一个错误还是结果不是预期的?where子句中的第二个和第二个似乎缺少一个=。也许您的意思是
和medecin.idDisp=consultation.idDisp
在select子句和旧语法中嵌套查询……格式化程序无法理解这一点@Ziko-此查询需要相当多的时间才能运行。MYSQL使用这种语法的表现非常糟糕。选择行应为dispensaire.IdDisp,count(*)……子查询逻辑的其余部分应位于where语句中。(蓝脚怪打了我一顿回答)非常感谢你们,伙计们:)非常感谢,兄弟D非常感谢你,兄弟!:D