c# - 预订系统中的SQL

标签 c# asp.net sql postgresql

我正在使用 C# 和 postgreSQL 数据库构建一个 asp.net 应用程序。该应用程序是医生办公室的预约系统。

我有下表用于预约:

enter image description here

我有下表的时间:

enter image description here

两个表中的列时间之间存在关系(tbl_appointment 中的时间是 tbl_times 中时间的外键)。

在应用程序中,我有一个如下所示的下拉列表。用户首先选择医生,然后选择日期,然后点击下拉列表选择时间。带有时间的下拉列表是从数据库 tbl_times 加载的。

enter image description here

现在我的问题是: 如何编写 SQL 以仅加载没有约会的时间? 如果用户首先选择 Dr D,然后选择日期 2014-04-23,那么在下拉列表中我想加载从 tbl_times 开始的所有时间,除了 08:00 和 10:00。

更新: 我的问题是如何排除记录。 我试过这个SQL(当然我不写值):

SELECT time
FROM tbl_times
WHERE time NOT IN (
  SELECT time
  FROM tbl_appointment
  Where doctor = 'Dr D' AND date = '2014-04-23'
 )

最佳答案

因为您没有 Doctors 治疗台,您正在让自己的生活变得艰难。我还会有一个 DateTime 列,而不是 Date 和 Time。我的建议是:

select t.DateTime, d.Name from times t
cross join doctors d
left join Appointments a on t.DateTime = a.DateTime and d.DoctorID = a.DoctorID
where a.ID is null

这将为您提供所有医生免费预约的列表。

正如我在评论中提到的,您需要阅读 SQL Injection Attacks .就目前而言,您的代码非常脆弱。

关于c# - 预订系统中的SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23239537/

相关文章:

c# - 尝试设置 TextBox.IsReadOnly 时出现奇怪的 XAML 解析错误

c# - 如何在ajax回发后从代码隐藏调用javascript函数

asp.net - 如何将单记录数据绑定(bind)到ASP.NET中的控件?

javascript - Asp.Net 从 javascript 的弹出窗口中获取值

sql - PostgreSQL - 使用 case 语句测试整数时返回字符串

java - 从 JOOQ 解析器结果中获取表/列元数据

c# - 如何将 ICommand 添加到 FrameworkElement 中的事件?

c# - 无法将它绑定(bind)到我的网格到 Telerik OpenAccess 数据源

c# - 以编程方式单击按钮 C#

mysql - 运行MYSQL代码时出错-- super 困惑