2013-03-24 40 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