【发布时间】:2015-09-15 04:56:12
【问题描述】:
我有三个要合并的表。我有一个表医生,病人和手术。医生代表所有医生。 Patient 代表患者,操作持有来自患者和医生的主要密钥。 我如何编写一个查询来显示我的 ChiefDoctor 和 assistantDoctor 和 Patient?到目前为止我达到了什么?
显示首席医生或助理医生的名字和姓氏。我如何写来显示一张同时包含首席和助理的表格?
select a.vorname|| ' ' || a.nachname AS leitenderArzt, p.firstname || ' ' || p.lastname AS patient
from angestellter a inner join operation o on a.id = o.leitenderarzt
inner join patient p on o.patientident=p.ident
| id | firstname | lastname | patient |
| 1 | ImA | ChiefDoctor1 | p.firstname |
| 3 | ImA | ChiefDoctor3 | p.firstname |
我的数据库的底层结构与表示。
CREATE TABLE doctor
(
id serial NOT NULL,
firstname character varying(255) NOT NULL,
lastname character varying(255) NOT NULL,
CONSTRAINT angestellter_pkey PRIMARY KEY (id),
}
Table doctor
|id | firstname | lastname |
| 1 | ImA | ChiefDoctor1 |
| 2 | ImA | AssistantDoctor |
| 3 | ImA | ChiefDoctor2 |
CREATE TABLE patient
(
ident serial NOT NULL,
firstname character varying(255) NOT NULL,
lastname character varying(255) NOT NULL,
CONSTRAINT patient_pkey PRIMARY KEY (ident),
}
Table patient
| ident | firstname | lastname |
| 1 | Operated | ME |
CREATE TABLE operation
(
id serial NOT NULL,
chiefDoctor integer NOT NULL,
AssistantDoctor integer NOT NULL,
patientident integer NOT NULL,
CONSTRAINT operation_pkey PRIMARY KEY (id),
CONSTRAINT fkoperation539608 FOREIGN KEY (patientident)
REFERENCES patient (ident) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fkoperation745809 FOREIGN KEY (assistantDoctor)
REFERENCES angestellter (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fkoperation949671 FOREIGN KEY (chiefDoctor)
REFERENCES angestellter (id) MATCH SIMPLE
}
Table operation
| id | doctorID | doctorID | patientID |
| 1 | 1 | 2 | 1 |
我如何编写一个查询来显示谁操作了一个全名的病人?它应该是这样的。
| id | chiefdoctor | assistantdoctor | patient |
|----| ImA + ChiefDoctor |ImA + AssistantDoctor | Operated + ME|
【问题讨论】:
-
“%s/}/);/g :-]”是什么意思? :-]
-
您因此使用
}来终止表定义。并省略了; -
操作表是krank。它是一个多对多的表,但并不是真正的多对多。如果工作人员中有另一位医生,你会怎么做?我会通过一个表操作和另一个多对多表来改进体系结构。比你想加入什么都行
-
如果工作人员中来了另一位医生,你会怎么做?我将插入医生价值观(4,ImA,ChiefDoctor4);查询也会向我显示那个医生,还是我错过了什么?我添加了一位新医生,如果他做了手术,我将在操作“4”、“someAssistant”、“some patient”中添加他的 ID。
标签: sql database postgresql