1
ジャンクションテーブルを含む複数のテーブルからレコードを照会するSQLクエリを作成しようとしています。 Userprofileテーブルは、ロールとチームテーブルとの関係、およびTimeZoneテーブルとの1対1の関係を持っています。ジャンクションテーブルである複数のテーブルを照会する
私はUserProfileテーブルからロール、チーム、タイムゾーンテーブルの関連レコードを取得するクエリを実行しようとしています。私はクエリを書こうとしましたが、それは過度に複雑になっています。誰かが私のクエリを確認し、
の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