C# 医生去世了,如何重新安排与SQL的约会?

C# 医生去世了,如何重新安排与SQL的约会?,c#,sql,ms-access,C#,Sql,Ms Access,我对SQL非常陌生,我希望这是一个可以理解的问题。我正在为自己做一个小项目,我从一个问题到另一个问题,努力学习新东西。我制作了一个Access文件,我用c通过SQL更新了它 在将医生从数据库中删除之前,我希望将其现有预约重新安排给在原始预约日期有时间的其他医生 “我的约会”表中有以下列: ID_预约、ID_医生、ID_患者、日期、时间和a列备注 对于ID_Patient值,我将使用表ID_Patient,反之亦然 我一直在考虑用另一名医生的ID_Doctor值更新该值,该医生在给定的数据和时间内

我对SQL非常陌生,我希望这是一个可以理解的问题。我正在为自己做一个小项目,我从一个问题到另一个问题,努力学习新东西。我制作了一个Access文件,我用c通过SQL更新了它

在将医生从数据库中删除之前,我希望将其现有预约重新安排给在原始预约日期有时间的其他医生

“我的约会”表中有以下列: ID_预约、ID_医生、ID_患者、日期、时间和a列备注

对于ID_Patient值,我将使用表ID_Patient,反之亦然

我一直在考虑用另一名医生的ID_Doctor值更新该值,该医生在给定的数据和时间内没有预约,但从头开始创建代码对我来说很难,如果有一点帮助,我希望能更快地理解它


任何帮助都将不胜感激,谢谢

由于这与医疗数据库有关,当涉及到访问它的代码时,它有相当强的HIPAA管理法规,因此您可能希望将其留给开发人员。此外,即使没有一个现有的代码闪烁,你不能张贴任何方式,因为它属于一个医疗数据库,我们没有起点来帮助你

您说的是Access,但您是使用Jet还是Access本身已安装?如果是,您可以使用“查询设计”窗口设置示例查询,然后切换到SQL视图查看它们的工作方式。这段代码中的SQL字符串应该可以在c中使用,只需很少修改。我希望有这样的情况:

UPDATE Appointments SET ID_Doctor = 2 
WHERE ID_Doctor = 1

假设这都是理论,那么在高容量数据库中实现这一点肯定是更好的方法!!。 但是对于学习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,其中的预约为死亡医生的ID。 它将这些预约的医生id设置为当时没有预约的医生的第一个id

注意:您可以通过更改以下行来改进sql:da.Time=a.Time
若要更具时间范围,以便您的预约不会安排得太近。

若要在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

免责声明:不要使用这样的代码用于医疗生产软件,LOL

您可能需要考虑SQLServer Express而不是Access。或者MySQL。听起来好像你已经将患者数据放在本地机器的access DB中了。请确保所有本地数据都已加密,并尝试找到一个服务器来承载您的数据库。我不理解所有关于Access/Jet/ACE不完全足够的建议。问题中没有任何信息表明所涉及的数据量,也没有信息使用的背景,例如,是否涉及HIPAA共犯。别再抱着反访问的偏见了,伙计们——当你回答那些没有被问到的问题,并且没有真正的理由这样做的时候,这会让你看起来很愚蠢。对所有国家都是这样吗?每个国家都有自己的具体规定,HIPAA是美国的,而伟大的英国也有类似的规定,但绝大多数社区对医生/患者信息有一些基本的保护,这需要数字医疗记录的标准化安全。因此,我们假设这是一个个人项目。我们做出了一个很可能是错误的假设,即该项目涉及有关美国医生/患者的信息。我们假设他的个人项目看到了曙光,有人违反了他的代码,获得了访问患者记录的权限。他能告诉医疗委员会,这是一个学习项目,因为他们猛拉诊所的经营许可证?我仍然认为你是相当以美国为中心的。医生也可以包括牙医,而在荷兰,这类医生可能不受如此严格的规定的约束,这是扬·威廉简介中给出的国家代码。HIPAA不保证适用。我有一个客户的数据库包括医生和临床医生的预约,HIPAA不适用。在我最近将其升级为SQL Server之前,它与Jet后端一起运行了10多年。仅仅升级数据存储并不能神奇地使应用程序符合HIPAA标准,因此,任何关于带有Jet/ACE后端的Access应用程序定义上不符合HIPAA标准,而另一个后端将解决该问题的建议都是毫无根据的。+1,虽然您可能想从医生中选择排名前1的ID_医生,而不是从ID_医生中选择排名前1的医生。谢谢,我知道我错过了一些东西。