У меня есть несколько таблиц:
- Таблица «DCDetails», которая содержит основные данные для нескольких диагностических центров.
- Таблица «CompanyDetails», которая содержит основные данные для компаний.
- Таблица «Расследование», в которой содержатся исследования (что означает набор медицинских тестов)
Это мои мастер-таблицы.
У меня также есть несколько таблиц отображения:
1. Таблица «КомпанияDCMap», которая содержит КАРТОЧКУ компании для диагностических центров
2. Таблица «РасследованиеDCMap», в которой содержится МАРКИРОВАНИЕ исследования для диагностических центров (или DC для краткости)
Я должен отфильтровать набор DC на основе двух критериев, которые:
- DC принадлежит к «CompanyDCMap» и
- Из DC, отфильтрованного в (1), он также входит в таблицу «InvestigationDCMap».
Как написать запрос для этого, так что я получаю DC, которые находятся как в CompanyDCMap, так и в InvestigationDCMap, поскольку у меня есть первичные ключи таблиц «CompanyDetails» и «Investigation».
Я почти сдался, я не могу думать о запросе, который фильтрует два набора одновременно.
Пожалуйста, помогите мне.
UPDATE
Schema:
CompanyDetails table:
CompanyID(PRIMARY KEY), CompanyName(NVARCHAR(100))
1 Company1
2 Company2
3 Company3
Таблица расследований:
InvestigationID(Primary key) , InvestigationName(NVARCHAR(100))
1 HIV+ Blood Test
2 TMT
3 Urine Test
Таблица DCDetails:
DCID(PRIMARY KEY), DCName(NVARCHAR(100))
1 DC1
2 DC2
3 DC3
Стол компанииDCMap
CompanyDCMapID(Primary key), CompanyID(Foreign key), DCId(Foreign Key)
1 1 1
2 1 2
3 2 2
4 2 3
5 3 1
6 3 3
Таблица расчётов DCMap
InvestigationDCMapID(Primary Key), InvestigationID(Foreign Key), DCId(Foreign Key)
1 1 1
2 1 3
3 2 2
4 2 3
Ожидаемый результат запроса, заданного CompanyID = 1 и InvestIDID = 2, SELECT DCId и DCName =
DCId(Int) DCName(NVARCHAR(100))
2 DC2