22

我有两张桌子:

表 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 中加入这些以获取一个表,其中对于每个上下文 ID,我将有一个完整的公式列表,即

结果

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]
4

4 回答 4

25

你想使用一个CROSS JOIN

SELECT FormulaId, Formula, ContextId, [Name]
FROM Formula
CROSS JOIN Context
于 2012-10-04T01:49:14.753 回答
24

您可以Cartesian Product按如下方式使用这两个表:

SELECT * FROM Formulas, Context

这将导致M * N行。

于 2012-10-04T01:46:49.753 回答
4

你试过吗CROSS APPLY

select *
from context
cross apply formulas
order by contextid

请参阅带有演示的 SQL Fiddle

于 2012-10-04T01:46:56.177 回答
0

您只能进行交叉连接。其他连接只能与相关表一起完成。

于 2012-10-05T05:24:13.263 回答