Я пытаюсь написать запрос, используя следующие таблицы примеров:
Company
CompanyRelation
- ParentCompanyID
- ChildCompanyID
CompanySpecialty
Таблица CompanyRelation
используется потому, что каждая компания может иметь много подкомпаний, а каждая подкомпания может иметь многокомпании над ним.
В идеале я хочу найти все компании по определенному округу и / или по определенной специальности.Теперь, обычно, я просто присоединяю Company
к CompanySpecialty
и фильтрую по этим двум полям, но вот где это становится сложным: у подкомпаний нет назначенных им округов, поэтому, если я фильтрую по округу, всесубкомпании будут исключены.
Если я отфильтрую компании по округу, я хотел бы отобразить все подкомпании, связанные с этой компанией, независимо от того, что у подкомпании нет адреса.
Комучтобы обойти это, я должен принести таблицу CompanyRelation
.
Пример данных:
CompanyID---Name---County
1-----------ABC----King
2-----------BCD----Pierce
3-----------DEF----NULL
4-----------EFG----NULL
ParentCompanyID---ChildCompanyID
1-----------------1
1-----------------3
2-----------------2
2-----------------4
CompanyID---Specialty
1-----------Vehicles
2-----------Vehicles
3-----------Vehicles
4-----------Vehicles
Используя эти данные, скажем, я хочу найти все компании в округе Кинг, которые занимаются транспортными средствами.В моих результатах я бы ожидал увидеть Компанию 1 и Компанию 3.
Как мне написать запрос для достижения этой цели?