Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Каверзный запрос

$
0
0
В рамках работы по изучению спроса в интернет-магазине, поставили нетривиальную задачу.
Не пинайте сильно, задача такая, что объяснить даже трудно, голову сломал, и всё же...

Есть большая таблица соответствий между идентификаторами [id1] int not null и [id2] int not null.
На основе этой таблицы была создана таблица уникальных пар [id1] и [id2]
select distinct [id1],[id2] into #Pairs from
(
   select distinct [id1],[id2] from [BigTable] union
   select [id2],[id1] from [BigTable]
) A


Идентификатор [id1] может соответствовать нескольким идентификаторам [id2], образуя некую группу :
1000 - 11037
1000 - 22371
1000 - 1037
1000 - 8779
Как получить список идентификаторов [id1], такие что соответствующая кажому из них группа из [id2] соответстуют только исходному [id1] либо члену группы, но НЕ ВЫХОДИТ из группы?
Например, вот это будет искомое
11037 - 1000
22371 - 1000
1037 - 1000
8779 - 1000
22371 - 1037
11037 - 8779
А вот это - уже нет
11037 - 1000
22371 - 1000
1037 - 1000
8779 - 1000
22371 - 1037
11037 - 8779
22371 - 2000 - выходит из группы

Viewing all articles
Browse latest Browse all 7251

Trending Articles