Доктор умер, как перенести встречи с SQL? - PullRequest
4 голосов
/ 26 января 2011

Я действительно новичок в SQL, я надеюсь, что это понятный вопрос. Я делаю небольшой проект для себя, я иду от проблемы к проблеме, пытаясь узнать что-то новое. я сделал файл доступа, который я обновляю через SQL с помощью c #.

Прежде чем удалить врача из базы данных, я хочу перенести свои существующие встречи на прием к другим врачам, у которых есть время на дату первоначального посещения.

Моя таблица APPOINTMENT содержит следующие столбцы: ID_Appointments, ID_Doctor, ID_Patient, Дата, Время и примечания к столбцу.

Для значения ID_Patient я буду использовать таблицу ID_Patient, и наоборот для значения Doctor.

Я пытался обновить значение ID_Doctor с помощью этого другого врача, который не назначил встречу с данными данными и временем, но создать код с нуля мне сложно, и с небольшой помощью я надеюсь понять это гораздо раньше.

Любая помощь будет высоко ценится, спасибо!

Ответы [ 4 ]

4 голосов
/ 26 января 2011

Предполагая, что это все теория (безусловно, лучшие способы сделать это в больших объемах БД !!).Но для изучения 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>

Объяснение: Обновляет таблицу назначений (псевдоним: a), где назначения соответствуют идентификатору умершего доктора.Он устанавливает идентификатор доктора для этих назначений, чтобы быть первым идентификатором доктора, который не получил назначение в то время.

Примечание.= a.Время больше времени, поэтому у вас нет встреч, которые запланированы очень близко друг к другу.

3 голосов
/ 26 января 2011

Чтобы заменить доктора 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 для программного обеспечения медицинского производства, смеется)

3 голосов
/ 26 января 2011

, поскольку это относится к медицинской базе данных, которая имеет довольно строгие правила HIPAA, регулирующие ее, когда дело доходит до кода, который обращается к ней, вы можете захотеть оставить это разработчику.Кроме того, даже без сцинтиллы существующего кода, который вы не можете публиковать в любом случае, потому что он принадлежит медицинской базе данных, мы не сможем вам помочь.

1 голос
/ 26 января 2011

Вы говорите, Access, но вы используете Jet или сам Access установлен? если это так, вы можете использовать окно конструктора запросов, чтобы настроить примеры запросов, а затем переключиться на представление SQL, чтобы увидеть, как они работают. Строки SQL из этого должны быть использованы в c # с очень небольшими изменениями. Я бы ожидал что-то вроде:

UPDATE Appointments SET ID_Doctor = 2 
WHERE ID_Doctor = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...