Sql fiddle
CREATE TABLE [Users_Reg] ( [User_ID] [int] IDENTITY (1,1) NOT NULL CONSTRAINT User_Reg_P_KEY PRIMARY KEY,[Name] [varchar] (50) NOT NULL,[Type] [varchar] (50) NOT NULL /*Technician/Radiologist*/ ) CREATE Table [Study] ( [UID] [INT] IDENTITY (1,1) NOT NULL CONSTRAINT Patient_Study_P_KEY PRIMARY KEY,[Radiologist] [int],/*user id of Radiologist type*/ [Technician] [int],/*user id of Technician type*/ ) select * from Study inner join Users_Reg on Users_Reg.User_ID=Study.Radiologist
在patient_study表中,放射科医师或技师可能有0值.
我如何从查询中获得技术员姓名和放射科医生姓名.
解决方法
您将需要两次在users_reg表上JOIN以获得结果.一次是放射科医师,另一次是技术人员:
select ps.uid,ur1.name rad_name,ur1.type rad_type,ur2.name tech_name,ur2.type tech_type from Patient_Study ps left join Users_Reg ur1 on ur1.User_ID=ps.Radiologist left join Users_Reg ur2 on ur2.User_ID=ps.Technician;
请参阅SQL Fiddle with Demo.这将返回所有患者研究的放射科医师和技术人员姓名/类型.如果要替换任何列中的null,则可以使用类似于以下内容的COALESCE:
select ps.uid,coalesce(ur1.name,'') rad_name,coalesce(ur1.type,'') rad_type,coalesce(ur2.name,'') tech_name,coalesce(ur2.type,'') tech_type from Patient_Study ps left join Users_Reg ur1 on ur1.User_ID=ps.Radiologist left join Users_Reg ur2 on ur2.User_ID=ps.Technician;