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

Быстрый фон для заинтересованных,

У меня есть основная таблица детали (дата опций), приблизительно 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

И я возвращаю таблицу, которая похожа на мою старую таблицу деталей.

Это даже возможно? Я имею какой-либо смысл?

18
задан Benjamin 18 February 2014 в 12:23
поделиться

1 ответ

Оператор APPLY должен помочь:

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

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

33
ответ дан 30 November 2019 в 07:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: