Doktor starb, wie Termine mit SQL verschieben?

Ich bin wirklich neu in SQL Ich hoffe, das ist eine verständliche Frage. Ich mache ein kleines Projekt für mich selbst, ich gehe von Problem zu Problem, das versucht, neue Dinge zu lernen. Ich habe eine Access-file gemacht, die ich durch SQL mit c # aktualisiere.

Bevor ein Arzt aus der database entfernt wird, möchte ich seine bestehenden Termine auf andere Ärzte umstellen, die zum timepunkt des ursprünglichen Termins time haben.

Meine Tabelle APPOINTMENT enthält die folgenden Spalten: ID_Appointments, ID_Doctor, ID_Patient, date, Uhrzeit und Spaltennotizen.

Für den ID_Patient-Wert verwende ich die Tabelle ID_Patient, umgekehrt für den Doctor-Wert.

Ich habe versucht, den ID_Doctor-Wert mit dem eines anderen Arztes zu aktualisieren, der keinen Termin zu den gegebenen data und timeen hat, aber den Code ganz neu zu erstellen, ist schwer für mich und mit ein wenig Hilfe hoffe ich, es viel früher zu verstehen .

Jede Hilfe wird sehr geschätzt werden, danke!

Solutions Collecting From Web of "Doktor starb, wie Termine mit SQL verschieben?"

Angenommen, das ist alles Theorie (sicherlich bessere Möglichkeiten, dies in einer großen Menge DB zu tun !!). Aber zum Erlernen von SQL sollte das Folgende den Trick machen.

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: Es aktualisiert Ihre Termintabelle (Alias: a), wobei die Termine für die ID des verstorbenen Arztes stehen. Es legt die ID des Arztes für diese Termine fest, um die erste ID eines Arztes zu sein, der zu dieser time keinen Termin hat.

Hinweis: Sie können den SQL-Wert verbessern, indem Sie die Zeile ändern: da.Time = a.time, um einen größeren timeraum zu haben, damit Sie keine Termine haben, die extrem nahe beieinander liegen.

Da es sich um eine medizinische database handelt, die ziemlich starke HIPAA-Vorschriften für den Code enthält, der auf sie zugreift, sollten Sie dies einem Entwickler überlassen. Auch ohne einen Funken von existierendem Code, den Sie nicht posten können, weil er zu einer medizinischen database gehört, haben wir keinen Ausgangspunkt, Ihnen zu helfen.

Um Arzt 42 bei all seinen Terminen zu replace, versuchen Sie:

 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 

(Haftungsausschluss: Verwenden Sie keinen SO-Code für medizinische Produktionssoftware, lol)

Sie sagen Access, aber verwenden Sie Jet oder ist Access selbst installiert? Wenn dies der Fall ist, können Sie das Abfrageentwurfsfenster verwenden, um Beispielabfragen einzurichten und dann zur SQL-view zu wechseln, um zu sehen, wie sie funktionieren. Die SQL-Strings von diesem sollten in c # mit sehr wenig Modifikation verwendbar sein. Ich würde etwas erwarten wie:

 UPDATE Appointments SET ID_Doctor = 2 WHERE ID_Doctor = 1