SQL连接表和显示数据
我有3张桌子与我遇到麻烦的医院有关 入院包括患者、入院日期、出院日期和病房。SQL连接表和显示数据,sql,join,Sql,Join,我有3张桌子与我遇到麻烦的医院有关 入院包括患者、入院日期、出院日期和病房。 医生医生姓名、名字和病房。 病房病房ID、姓名和顾问(医生ID) 我已经能够做很多教程要求我做的事情,但是我找不到任何关于如何做以下事情的指导或答案: 我希望找到患者未使用的医生姓氏,并显示患者使用的姓氏。我猜加入到医生和病房的表格中,并以某种方式加入到入院表格中,以表明530医生没有被任何患者使用 然后,我应该有一个和,以显示与病房表中的顾问对应的医生的姓氏 为了找到没有治疗过任何患者的医生的详细信息,我将加入“病
医生医生姓名、名字和病房。
病房病房ID、姓名和顾问(医生ID) 我已经能够做很多教程要求我做的事情,但是我找不到任何关于如何做以下事情的指导或答案: 我希望找到患者未使用的医生姓氏,并显示患者使用的姓氏。我猜加入到医生和病房的表格中,并以某种方式加入到入院表格中,以表明530医生没有被任何患者使用 然后,我应该有一个和,以显示与病房表中的顾问对应的医生的姓氏 为了找到没有治疗过任何患者的医生的详细信息,我将加入“病房医生”并显示那些不在“顾问”栏中的医生的详细信息。我理解这个理论,只是不知道如何在SQL中正确地计算出来
我欢迎任何关于答案的讨论或帮助,因为我很想了解这一步。患者不使用的医生
select distinct d.number, d.surname
from doctor d
left join ward w on w.consultant = d.number
left join admission ad on ad.ward = w.code
left join patient p on p.code = ad.patient
where p.code is null
select distinct d.number, d.surname
from doctor d
join ward w on w.consultant = d.number
join admission ad on ad.ward = w.code
join patient p on p.code = ad.patient
患者使用的医生
select distinct d.number, d.surname
from doctor d
left join ward w on w.consultant = d.number
left join admission ad on ad.ward = w.code
left join patient p on p.code = ad.patient
where p.code is null
select distinct d.number, d.surname
from doctor d
join ward w on w.consultant = d.number
join admission ad on ad.ward = w.code
join patient p on p.code = ad.patient
模式(用于测试):
select * into patient
from (
select 'A102' [code], 'Harris' [surname], 'Lucy' [lastname] union all
select 'B372', 'Rossini', 'Peter' union all
select 'B534', 'Johnson', 'Nadia' union all
select 'B444', 'Johnson', 'Juigi' union all
select 'S555', 'Rose', 'Jean') as p
select * into admission
from (
select 'A102' [patient], null [admitted], NULL [discharged], 'A' [ward] union all
select 'A102', null, NULL, 'A' union all
select 'S555', null, NULL, 'B' union all
select 'B444', null, NULL, 'B' union all
select 'S555', null, NULL, 'A') as ad
select * into doctor
from (
select 203 [number], 'Black' [surname], 'Peter' [firstname], 'A' [ward] union all
select 574, 'Blis', 'Mavis', 'B' union all
select 461, 'Boyne', 'Steve', 'B' union all
select 530, 'Clark', 'Nicola', 'C' union all
select 405, 'Mizzi', 'Nicola', 'A' union all
select 501, 'Mount', 'Mavis', 'A') as d
select * into ward
from (
select 'A' [code], 'Surgical' [name], 203 [consultant] union all
select 'B', 'Paediatric', 574 union all
select 'C', 'Medical', 530) as w
一篇帖子的问题太多了。把它分解成更小的问题。