[英]SQL query to pull data from three different tables
我必须创建一个SQL查询,以按姓,名顺序列出“麻雀”翼中的所有护士。
但是,我需要从Nurse表中拉出Nurse_name和Nurse_surname,该表通过外键Sister_ID链接到另一个名为Sister的表,然后将此表链接到另一个具有外键Sister_ID的表Wing。
护士由姐姐管理,而姐姐则负责管理。
谁能帮助我进行SQL查询吗? 就这样,我只能从护士和姐妹表中获取数据。
由于您似乎已经意识到应该使用inner join
联接来连接表(但显然不需要通过相关列进行连接),因此您应该运用该知识来连接所有需要回答查询的表。
如果您从最终结果开始并往回走,则首先选择所需的列:
select Nurse.Nurse_name, Nurse.Nurse_surname
然后由于它们属于Nurse表,因此在from子句中将其用作源
from Nurse
要获得Wing,您需要连接Sister表,但要连接它和Nurse,首先需要在shared属性上连接SisterNurse表
join SisterNurse on Nurse.Nurse_ID = SisterNurse.Nurse_ID
现在您可以在与SisterNurse共享的属性上加入Sister
join Sister on Sister.Sister_ID = SisterNurse.Sister_Id
最后你可以加入永安
join Wing on Wing.sister_ID = Sister.Sister_ID
将机翼限制为“麻雀”
where Wing.Wing_Name = 'Sparrow'
并排序数据
order by Nurse.Nurse_surname, Nurse.Nurse_name
放在一起,您将获得:
select Nurse.Nurse_name, Nurse.Nurse_surname
from Nurse
join SisterNurse on Nurse.Nurse_ID = SisterNurse.Nurse_ID
join Sister on Sister.Sister_ID = SisterNurse.Sister_Id
join Wing on Wing.sister_ID = Sister.Sister_ID
where Wing.Wing_Name = 'Sparrow'
order by Nurse.Nurse_surname, Nurse.Nurse_name
您不会提供有关所涉及的架构的太多信息,但这可能会有所帮助:
select
n.Nurse_name
, n.Nurse_surname
, w.Wing_name
, managing_nurse.Nurse_name
, managing_nurse.surname
from
Nurse n
join Sister s on n.Sister_ID=n.Sister_ID
join Wing w on s.Sister_ID=w.Sister_ID
join Nurse managing_nurse on w.Nurse_Manager_ID=managing_nurse.Sister_ID
一种简单的方法是使用“联合”:
select * from (
select nurse_name, nurse_surname, 'nurse' as nurse_type from nurse_table
union
select nurse_name, nurse_surname, 'sister' as nurse_type from syster join nurse_table on nurse_table.syster_id = syster.syster_id
union
select nurse_name, nurse_surname, 'wing' as nurse_type from wing join syster on wing.syster_id = syster.syster_id join nurse_table on nurse_table.syster_id = syster.syster_id )
order by nurse_surname, nurse_name
希望这对您有所帮助!
PS我假设syster表和wing表具有Nurse_name和Nurse_surname字段。 如果不是,则必须为所有选定的列赋予相同的别名
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.