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

Как присоединиться к двум несвязанным таблицам в sql

У меня две таблицы:

Таблица 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]
4b9b3361

Ответ 1

Вы можете использовать Cartesian Product двух таблиц следующим образом:

SELECT * FROM Formulas, Context

Это приведет к M * N строкам.

Ответ 2

Вы хотите использовать CROSS JOIN:

SELECT FormulaId, Formula, ContextId, [Name]
FROM Formula
CROSS JOIN Context

Ответ 3

Вы пытались использовать CROSS APPLY:

select *
from context
cross apply formulas
order by contextid

См. SQL Fiddle With Demo

Ответ 4

Вы можете использовать Cross Join. Другие объединения могут выполняться только со связанными таблицами.