プロジェクトに問題があります。特定の国または都市にある企業のリストを取得しようとしています。
テーブル構造:
会社
CompanyID
CompanyName
etc…
CompanyAddressDetails(関係テーブル)
Company_CompanyID
CorrespondingAddress_AddressID
対応する住所:
AddressID
StreetName
RegionID
etc…
領域
RegionID
RegionName
RegionRegionTypeID
RegionDetails(関係テーブル)
RegionParent
RegionChild
したがって、ストックホルムの例(RegionテーブルにID 1198がある)で住所を見つけるには、次のようにします。
var addresses = from c in db.CorrespondingAddress select c;
addresses = addresses.Where(s => s.RegionID.Equals(1198));
そしてストックホルムで会社を見つけるために私はします:
companyModel = from c in db.Company select c;
companyModel = companyModel.Where(s => s.CorrespondingAddress.Any(x => x.RegionID.Equals(1198)));
しかし、ここで、RegionDetailsテーブル(親と子があります。たとえば、1(スウェーデン)が親で、1198(ストックホルム)が子など)を考慮に入れたいと思います。
スウェーデンにあるが、住所行にID 1198(ストックホルム)がある会社を見つけるにはどうすればよいですか?
プレーンSQLでは、おそらく次のようなことをします。
SELECT CompanyName FROM Company
LEFT JOIN CompanyAddressDetails ON (Company.CompanyID = CompanyAddressDetails.Company_CompanyID)
LEFT JOIN CorrespondingAddress ON (CompanyAddressDetails.CorrespondingAddress_AddressID = CorrespondingAddress.AddressID)
LEFT JOIN Region ON (CorrespondingAddress.RegionID = Region.RegionID)
WHERE CorrespondingAddress IN (SELECT RegionChild FROM RegionDetails WHERE RegionParent = 1)