2016-09-11 4 views
3

я следующие таблицы:Как выбрать идентификаторы из второй таблицы, которые все идентификаторы существуют в первой таблице?

TravelPage

TravelPageID  TravelIDRef  PassengerIDRef 
    1    1    10 
    2    1    15 
    3    2    10 

Temp

PassengerID 
    10 
    15 

Я хочу, чтобы получить все travelIDRefs из TravelPage таблицы, которые все PassegerIDs(10,15) из temp table существует в travelPage table

Результат должен быть

travelIDRef=1, потому что оба 10,15 существует только для TravelIDRef=1

declare @TravelPage table 
(
    TravelPageID int, 
    TravelIdRef int, 
    PassengerIDRef int 
) 
declare @temp table 
(
    PassengerID int 
) 


insert into @TravelPage 
    values(1,1,10),(2,1,15),(3,2,10) 

insert into @temp 
values(10),(15) 
+0

do ain внутреннее соединение – Antoniossss

ответ

1

Используйте HAVING пункте:

SELECT t.TravelIdRef 
FROM TravelPage t 
CROSS JOIN Temp p 
GROUP BY TravelIdRef 
HAVING COUNT(DISTINCT t.PassengerIDRef) = COUNT(DISTINCT p.PassengerID) 

Или с подзапросом вместо того, Соединения:

SELECT t.TravelIdRef 
FROM TravelPage t 
GROUP BY TravelIdRef 
HAVING COUNT(DISTINCT t.PassengerIDRef) = 
     (SELECT COUNT(DISTINCT p.PassengerID) FROM Temp p) 
Смежные вопросы