2011-01-25 32 views
4

我真的很陌生,我希望這是一個可以理解的問題。我爲自己做了一個小項目,我從問題到試圖學習新事物的問題。我做了一個Access文件,我用c#更新了槽。醫生死了,如何重新安排與SQL的約會?

在從數據庫中刪除醫生之前,我想將他現有的約會重新安排給在原約會之日有時間的其他醫生。

我的APPOINTMENT表中包含以下列: ID_Appointments,ID_Doctor,ID_Patient,Date,Time和一個列註釋。

對於ID_Patient值,我將使用表ID_Patient,反之亦然Doctor值。

我一直在尋找更新ID_Doctor值與另一位醫生,這在沒有預約的給定的數據和時間,但創建代碼從頭開始對我來說很難,我希望有一點幫助更快地理解它。

任何幫助將不勝感激,謝謝!

+6

你可能要考慮的SQL Server Express而不是Access。 http://www.microsoft.com/express/Database/或MySQL。 http://www.mysql.com/ – TrueWill 2011-01-25 23:27:39

+4

不錯的問題標題;-) – BrokenGlass 2011-01-25 23:29:00

+2

這聽起來像是你已經採集患者數據並將其放置在本地機器上的訪問數據庫中。請確保所有本地數據都已加密,並嘗試找到一臺服務器來託管您的數據庫。 2011-01-25 23:36:08

回答

3

因爲這涉及到一個醫療數據庫,當涉及到訪問它的代碼時,它具有相當強大的HIPAA規則來管理它,您可能希望將其留給開發人員。也沒有現有的代碼閃爍,你不能發佈任何因爲它屬於一個醫療數據庫,我們沒有起點幫助你。

1

你說的訪問,但你使用Jet或是Access本身安裝?如果是,可以使用查詢設計窗口設置示例查詢,然後切換到SQL視圖以查看它們的工作方式。從這個SQL字符串應該可以在C#中使用,只需很少的修改。我會期望像這樣:

UPDATE Appointments SET ID_Doctor = 2 
WHERE ID_Doctor = 1 
4

假設這是所有的理論(當然更好的方法來做這個在大容量的數據庫!!)。 但爲了學習SQL,以下內容應該可以做到。

UPDATE a 
SET ID_Doctor = (SELECT TOP 1 ID_Doctor FROM ID_Doctor d 
       WHERE NOT EXISTS (SELECT 1 FROM Appointment da 
            WHERE da.ID_Doctor = d.ID_Doctor 
            AND da.Date = a.Date AND da.Time = a.Time) 
       ) 
FROM Appointment a 
WHERE a.ID_Doctor = <The ID of the Doctor who Died> 

Explination: 它更新您的預約表(別名:a)如任命均爲醫生已經死了的ID。 它爲這些約會設置了醫生的身份證,成爲當時沒有預約的醫生的第一個身份證。

注意:您可以通過更改下列行來改進sql:da.Time = a.Time 更像是一個時間範圍,因此您沒有排定的計劃非常接近。

3

要在他所有的約會取代醫生42,嘗試:

update Appointments 
set  ID_Doctor = 
     (
     select top 1 ID_Doctor 
     from Doctors d 
     where d.Alive = 1 
       and not exists 
       (
       select * 
       from Appointments a 
       where d.ID_Doctor = a.ID_Doctor 
         and Appointments.Time = a.Time 
       ) 
     ) 
where ID_Doctor = 42 
     and PatientSignedImmunityFormForInjuriesCausedByUntestedSQL = 1 

(聲明:不使用醫療產品軟件代碼SO,笑)