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