mysql - 使用 MAX 和 COUNT 从 3 个不同的表生成报告?

标签 mysql correlated-subquery

我有一个包含患者、医生、内阁和访问的数据库。

患者(id_pac、名字、姓氏)

医生(id_med、名字、姓氏、专业)

机柜(id_cab,名称)

访问次数(id_viz、Date_viz、Medic_id、Patient_id、Cabinet_id)

一位医生可以在不同的日期、不同的柜子里拜访不同的病人。

我需要在一份报告中找出(使用子查询或连接?,但不是中间表或 View ):

  1. 包含医生全名的一列:CONCAT(FirstName,' ',LastName) (DISTINCT),
  2. 一列包含医生就诊次数最多的柜名 和 3.一栏是这个柜子的访问次数。

我试图弄清楚如何获得这些信息,但我所能拥有的只是 他访问过的每个机柜的医生名单,以及访问总数/机柜:((

最佳答案

SELECT CONCAT(d.FirstName,' ',d.LastName) AS CompleteName
     , c.Name                             AS CabinetName  
     , dv.MaxVisits                       AS MaxVisits
FROM Doctors AS d
  LEFT JOIN
    ( SELECT Medic_id
           , MAX(NumVisits) AS MaxVisits
      FROM
        ( SELECT Medic_id
               , Cabinet_id
               , COUNT(*) AS NumVisits
          FROM Vizits AS v
          GROUP BY Medic_id
                 , Cabinet_id
        ) AS grp
      GROUP BY Medic_id
    ) AS dv
    ON dv.Medic_id = d.id_med
  LEFT JOIN
    ( SELECT Medic_id
           , Cabinet_id
           , COUNT(*) AS NumVisits
      FROM Vizits AS v
      GROUP BY Medic_id
             , Cabinet_id
    ) AS mcv
    ON  mcv.Medic_id = dv.Medic_id
    AND mcv.NumVisits = dv.MaxVisits
  LEFT JOIN Cabinets AS c
      ON c.id_cab = mcv.Cabinet_id

关于mysql - 使用 MAX 和 COUNT 从 3 个不同的表生成报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8350095/

相关文章:

c# - 我想从 mysql 中获取有关日期的数据,我已经尝试了一个它不起作用的代码

php - PDO如何从数组中插入多个数据到数据库?

mysql - 如何在相关子查询中计算 MySQL 中的移动平均值?

oracle - 我是否认为 MERGE 优于 UPDATE SET (-, -, -) = SELECT -, -, -?

mysql - 使用 mysql 变量的问题

mysql - CakePHP 并不总是返回外来字符

python - 将空字符串值作为日期导入 MySQL

MySQL-任何人都可以解释一下这个查询吗

sql - 从多个表中获取外键的计数

mysql - 获取三级子查询中的父列