首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从两个不同的列中提取数据的单下拉列表。

从两个不同的列中提取数据的单下拉列表。
EN

Stack Overflow用户
提问于 2013-12-18 23:18:30
回答 1查看 50关注 0票数 0

我对SQL很陌生,所以请原谅。我使用的是phpMyAdmin v3.4和MySQL (服务器版本) v5.5。是否可以为病人提供一个下拉列表,从两个不同的列中提取其数据?详情如下:

表:实践

代码语言:javascript
复制
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),必须能够(从下拉列表中)选择医生(唯一的),或者医生助理(唯一的),但不能两者兼而有之,即病人不应该能够看到在其他外科手术的其他医生和助理。我知道,也许更常见的情况是,表的结构使医生和助手在同一列中,但我想了解,是否可以将两个不同的列视为一列。

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

感谢你的期待。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-19 00:57:57

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

代码语言:javascript
复制
select
    doctor as DocOrAss
from
    practice
where
    surgeryid = 1
union
select
    assistant as DocOrAss
from
    practice
where
    surgeryid = 1

结果应类似于

代码语言:javascript
复制
DocOrAss
--------
Atkin
Cashmore

然而,这种设计感觉不太正确。

当你选择一个DocOrAss时,你可能会遇到一个问题,你怎么知道他们是医生还是助手?另外,你怎么能很容易地找到他们的手术呢?

练习表设计的问题是,您的表似乎有3项职责

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

这对于一张桌子来说有点过分,如果一个手术可以有一个以上的医生,这就违反了1NF原则。如果能把它分成三张表,也许会更好。

或者,如果您所要做的只是列出某一特定手术中的所有医生(假设助手实际上只是其他医生),那么也许一个更好但仍然简单的设计可能是创建一个名为do (DoctorIdPk,Name,SurgeryId)的表。然后,您可以为来自特定surgeryId的所有医生进行选择。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20670514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档