Подтвердить что ты не робот

Можно ли присоединиться к функции с табличной оценкой, а другая таблица с параметрами

Быстрый справочник для интересующихся,

У меня есть таблица основных данных (дата опций), около 20 деталей для каждой основной записи. Наша система oltp, которая сохраняет данные, делает 21 вставку для каждой новой информации, которую мы сохранили. Это убило сервер, поэтому я пытаюсь заставить это работать, заменяя значения, разделенные запятыми, для таблицы подробностей. Кажется, все работает, за исключением того, что я могу понять, как вернуть таблицу деталей. Я пытаюсь использовать табличные функции, и он не совсем работает.

Я хотел бы назвать что-то вроде

Select Top 100 *
FROM dbo.fn_MarketDataDetails (MarketDataMasterID) mdd
INNER JOIN MarketDataMaster mdm on mdm.MarketDataMasterID = mdd.MarketDataMasterID

Ясно, что это просто не компилируется.

Я могу запустить

Select Top 100 *
FROM dbo.fn_MarketDataDetails (15425) // Assuming 15425 is a valid MarketDataMasterID

И я верну таблицу, которая выглядит как моя таблица старых деталей.

Возможно ли это? Имею ли я смысл?

4b9b3361

Ответ 1

Оператор APPLY должен выполнить трюк:

SELECT *
 from MarketDataMaster
 cross apply dbo.fn_MarketDataDetails (MarketDataMasterID)

Это, по сути, вызывает функцию один раз за строку, возвращенную из MarketDataMaster. "cross apply" работает как внутреннее соединение, так как возвращаются только строки, для которых данные возвращаются функцией; используйте "внешнее применение" для функциональности, аналогичной левым внешним соединениям.