gpt4 book ai didi

mysql - 从 2 个不同列中提取数据的单个下拉列表

转载 作者:行者123 更新时间:2023-11-29 13:22:07 27 4
gpt4 key购买 nike

我是 SQL 新手,请原谅。我正在使用 phpMyAdmin v3.4 和 MySQL(服务器版本)v5.5。是否可以为患者提供一个从 2 个不同列中提取数据的下拉列表?如下:

表格:实践

SurgeryID | Doctor | Assistant

1_______________| Atkin__| Cashmore

2_______________| Obrien | Morgan

3_______________| Heron_ | Chapman

Table: BOOKING

BookingID | PatientName | DocOrAss

10001___ | Spock___________ | Atkin (DropDownListOffered)

10002__________| Scotty_____________ | Morgan (DropDownListOffered)

10003__________| Kirk_______________| Heron (DropDownListOffered)

患者仅属于一个特定的手术室(SurgeryID,即 PK),并且必须能够(从下拉列表中)选择医生(唯一)或医生助理(唯一),但不能同时选择两者只是一个手术室,即患者不应该能够看到其他手术室的其他医生和助理。我知道,将表格结构为“医生”和“助理”位于同一列中可能更常见,但我想了解是否可以将两个不同的列视为一个列。

我想简单地实现这个,作为一个永久表,也许通过某种组合键而不是在代码中操作。如果这是不可能的,例如也许没有函数可以帮助做到这一点,或者表结构被认为是糟糕的设计,那么我将继续 - 欢迎任何有关重新设计的建议。

感谢期待。

最佳答案

我认为您想要做的事情可以使用类似于下面的 SQL 来完成,该 SQL 将表与其自身联合起来,并将相同的别名分配给 2 个不同的列。

select
doctor as DocOrAss
from
practice
where
surgeryid = 1
union
select
assistant as DocOrAss
from
practice
where
surgeryid = 1

结果应该类似于

DocOrAss
--------
Atkin
Cashmore

但是设计感觉不太对劲。

您可能遇到的一个问题可能是,当您选择 DocOrAss 时,您如何知道他们是医生还是助理?另外,您如何轻松找出它们来自哪个手术?

练习 table 设计的问题是你的 table 似乎有3个职责

  1. 列出医生
  2. 列出手术
  3. 列表助理

这对于一张表来说有点太多了,并且破坏了1NF原则上一个手术可以有多名医生。最好将其分解一点,甚至分解成 3 个表。

或者,如果您想要做的只是列出特定手术中的所有医生(假设助理实际上只是其他医生),那么也许更好但仍然简单的设计可能是创建一个名为 Doctors (DoctorId[Pk] ,姓名,手术 ID)。然后,您可以对特定外科手术 ID 中的所有医生进行选择。

关于mysql - 从 2 个不同列中提取数据的单个下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20670514/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com