我有一个称为日志的表,其中包含技术人员按日期为医生完成的工作。
它包含以下字段: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遍历记录集日期以查看该技术人员在该日期是否有其他医生在工作。这似乎很漫长,但可能是唯一的解决方案。
最佳答案
计算子查询中的医生人数,然后将结果加入:
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
关于mysql - MySQL查询付款,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15598808/