2013-03-24 41 views
0

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

例如:
我在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循环遍历记录日期看是否有被制作那天的其他医生那个技术员。这似乎是漫长的,但可能是唯一的解决方案。

+0

你能给以表格格式所需的结果样本记录? – 2013-03-24 13:06:57

回答

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 
+0

美丽的戈登!非常感谢你! – Saseow 2013-03-24 13:43:57

+1

@ user2146684请在解决问题时单击答案左侧的检查来接受答案。 – fancyPants 2013-03-24 14:49:53