Ответ 1
Вы можете использовать Cartesian Product
двух таблиц следующим образом:
SELECT * FROM Formulas, Context
Это приведет к M * N
строкам.
У меня две таблицы:
Таблица 1: Формулы
FormulaId Formula Text
1 [Qty] * [Rect]
2 [Qty] * [Al]
3 [Mt] * [Cat]
Таблица 2: Контекст
ContextId Name
1 Test 1
2 Test 2
3 Test 3
4 Test 4
Мне нужно как-то присоединиться к SQL Server 2008 R2, чтобы получить таблицу, где для каждого идентификатора контекста у меня будет полный список формул, т.е.
результат
ContextId Name FormulaId Formula Text
1 Test 1 1 [Qty] * [Rect]
1 Test 1 2 [Qty] * [Al]
1 Test 1 3 [Mt] * [Cat]
2 Test 2 1 [Qty] * [Rect]
2 Test 2 2 [Qty] * [Al]
2 Test 2 3 [Mt] * [Cat]
3 Test 3 1 [Qty] * [Rect]
3 Test 3 2 [Qty] * [Al]
3 Test 3 3 [Mt] * [Cat]
4 Test 4 1 [Qty] * [Rect]
4 Test 4 2 [Qty] * [Al]
4 Test 4 3 [Mt] * [Cat]
Вы можете использовать Cartesian Product
двух таблиц следующим образом:
SELECT * FROM Formulas, Context
Это приведет к M * N
строкам.
Вы хотите использовать CROSS JOIN
:
SELECT FormulaId, Formula, ContextId, [Name]
FROM Formula
CROSS JOIN Context
Вы пытались использовать CROSS APPLY
:
select *
from context
cross apply formulas
order by contextid
Вы можете использовать Cross Join. Другие объединения могут выполняться только со связанными таблицами.