TSQL эквивалент Linq SelectMany - PullRequest
0 голосов
/ 04 ноября 2011

Мне бы хотелось, чтобы набор результатов состоял из объединения запросов, выполненных на основе каждой строки внешнего запроса SELECT.Как мне это сделать?

В качестве примера:

create table Person
(
    Id int,
    Age int
)

create table Movie
(
    Id int,
    Title varchar(500),
    AgeRestriction int
)

Я хотел бы, чтобы набор результатов показывал мне для каждого человека, какие фильмы ему разрешено смотреть.

ОБНОВЛЕНИЕ: Хорошо, так как выясняется, что в TSQL нет "эквивалента" SelectMany, поскольку модель совершенно иная, как указал автор правильного ответа, и внутреннее соединение выполнит эту работу простохорошо.

1 Ответ

3 голосов
/ 04 ноября 2011

Ваш вопрос довольно неясен, но звучит так, как если бы вы хотели CROSS APPLY

Случайный пример

SELECT DISTINCT ca.* /*DISTINCT for UNION semantics*/
FROM   master..spt_values v
       CROSS APPLY (SELECT TOP 2 *
                    FROM   sys.columns c
                    WHERE  c.name > v.name
                    ORDER BY c.name) ca  

Редактировать.После уточнения вам просто нужно JOIN

SELECT P.Id,
       M.Title
FROM   Person P
       JOIN Movie M
         ON M.AgeRestriction <= P.Age  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...