Mysql查询付款

时间:2013-03-24 13:04:37

标签: mysql

我有一张名为日志的表,其中包含技术人员按日期为医生所做的工作。 它包含字段:ref_doctor_id (doctor), technician_id (technician) and dos (date)
技术人员可以在特定日期为几位医生做工作。 对于每位医生,我需要了解技术人员是否在特定日期为其他医生做过工作,如果他这样做,我需要知道他当天有多少医生为他做过工作。这是为医生分配费用。

例如:
我正在Doctor 6 (id=6)工作,技师每天收费100美元 5日他只为医生6工作,因此医生6的费用是100美元 6日他为医生6和8工作,因此医生6的费用为50美元 7日他为6号,7号和8号医生工作,因此6号医生的费用为33.33美元 该期间医生的总费用为183.33美元。

我希望这很清楚,我希望SQL可以解决这个问题 提前谢谢!

2013-03-05  6   16
2013-03-06  6   16
2013-03-06  8   16
2013-03-07  6   16
2013-03-07  8   16
2013-03-07  10  16

我的选择是选择包含医生ID和技术人员ID的记录,然后使用PHP循环记录日期,以查看该技术人员是否有其他医生在该日期工作过。这似乎是一个漫长的过程,但可能是唯一的解决方案。

1 个答案:

答案 0 :(得分:1)

计算子查询中的医生数量并将结果重新加入:

select dos, technician_id, dt.numdocs
from t left outer join
     (select dos, technician_id, count(distinct ref_doctor_id) as numdocs
      from t
      group by dos, technician_id
     ) dt
     on dt.dos = t.dos and dt.technician_id = t.technician_id
where ref_doctor_id = 6
group by dos, technician_id