1
我想写一个SQL查询,查询涉及联结表的多个表中的记录。 Userprofile表与角色和团队表以及与TimeZone表的一对一关系具有关系。查询多个表两个正在联结表
我想实现一个查询,将从UserProfile表中提取记录以及来自角色,团队和时区表的相关记录。我试图写一个查询,它变得过于复杂。可能有人验证我的查询,告诉我做
正道表如下所示
用户配置表
[EmployeeID]
[Forename]
[Surname]
[PreferredName]
[DefaultLanguageCode]
[DefaultCountryCode]
[TimeZoneID]
[Domain]
[NetworkID]
队表
[TeamID]
[CountryCode]
[TeamName]
[TeamDescription]
UserTeamLinkTable
[UserProfileTeamLinkID]
[TeamID]
[UserProfileID]
[isDefault]
[isActive]
表的UserRole
[RoleID]
[RoleDescription]
[isActive]
UserRoleLink表
[UserProfileRoleLinkID]
[RoleID]
[UserProfileID]
[isActive]
时区表
[TimeZoneID]
[TimeZoneCode]
[TimeZone]
[TimeZoneName]
查询
select
userprofile.[UserProfileID]
,userprofile.[EmployeeID]
,userprofile.[Forename]
,userprofile.[Surname]
,userprofile.[PreferredName]
,userprofile.[DefaultCountryCode]
,userprofile.[DefaultLanguageCode]
,userprofile.[TimeZoneID]
,userprofile.TeamID
,userprofile.TeamName
,userprofile.[Domain]
,userprofile.[NetworkID]
,userprofile.[EmailAddress]
,userprofile.[CreatedDate]
,userprofile.[CreatedBy]
,userprofile.[ModifiedDate]
,userprofile.[ModifiedBy]
from TimeZone tz inner join
(
select
up.[UserProfileID]
,up.[EmployeeID]
,up.[Forename]
,up.[Surname]
,up.[PreferredName]
,up.[DefaultCountryCode]
,up.[DefaultLanguageCode]
,up.[TimeZoneID]
,te.TeamID
,te.TeamName
,up.[Domain]
,up.[NetworkID]
,up.[EmailAddress]
,up.[CreatedDate]
,up.[CreatedBy]
,up.[ModifiedDate]
,up.[ModifiedBy]
from [dbo].[UserProfileTeamLink] upt
inner join UserProfile up on up.UserProfileID = upt.UserProfileID
inner join Team te on te.TeamID = upt.TeamID) userprofile on tz.TimeZoneID = userprofile.TimeZoneID