私は次のテーブルを持っています、スキーマは
表: メンバー
Id // PK Int Auto Increment
MemberID
MembershipType // Holds MemberShipMaster types 1/2/3 for Prem, Corp or Free
RegisteredCountry // FK of CountryMaster table
RegisteredState // FK of States Table
RegisteredCity // FK of Districts table
PostalCountry // FK of CountryMaster table
PostalState // FK of States Table
PostalCity // FK of Districts table
注意: 郵便番号と登録住所は異なる場合があります (その論理的...)
表 : CountryMaster
Id // PK , int auto increment
Country // Name of Country
表 : MemberShipMaster
Id // PK int auto increment
Type // Type Id int , 1,2,3 respectively for Prem, Corp and Free
TypeName // Membership Type Name e.g. Premium, Corporate, Free
トバレ : 都市
Id, // PK int auto increment
Name
StateId // FK, PK of states table
表 : 状態
Id // PK int auto increment
Name
CountryId // FK , PK of COuntry
以下は私のクエリです
SELECT Id , MemberID, MembershipType, Districts.Name as RegisteredCity,
States.Name as RegisteredState,CountryMaster.Country as RegisteredCountry,
Districts.Name as PostalCity,States.Name as PostalState, CountryMaster.Country as PostalCountry
FROM dbo.JFPMembers RIGHT JOIN MemberShipMaster ON MemberShipMaster.Id= dbo.JFPMembers.MembershipType
LEFT JOIN Districts ON dbo.JFPMembers.PostalCity = Districts.Id OR Districts.Id =JFPMembers.RegisteredCity
LEFT JOIN States ON States.Id = dbo.JFPMembers.RegisteredState OR States.Id = dbo.JFPMembers.PostalState
LEFT JOIN CountryMaster ON CountryMaster.Id = dbo.JFPMembers.RegisteredCountry and CountryMaster.Id = dbo.JFPMembers.postalCountry
Where Id= @id
私の期待される出力:
列に保存されている ID に従って、下のフィールドに市、州、または国の適切な名前を入力します。しかし、その代わりに、目的の列に null 値を取得しています。結合を操作するために、データベースに 2 つの値が存在することを確認しました。
Districts.Name as RegisteredCity,States.Name as RegisteredState,CountryMaster.Country as RegisteredCountry,Districts.Name as PostalCity,States.Name as PostalState,,CountryMaster.Country as PostalCountry