如何在sql中连接两个不相关的表

时间:2012-10-04 01:44:06

标签: sql sql-server sql-server-2008 tsql sql-server-2008-r2

我有两张桌子:

表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 个答案:

答案 0 :(得分:20)

您想使用CROSS JOIN

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

答案 1 :(得分:18)

您可以按如下方式使用两个表中的Cartesian Product

SELECT * FROM Formulas, Context

这会产生M * N行。

答案 2 :(得分:4)

您是否尝试过CROSS APPLY

select *
from context
cross apply formulas
order by contextid

请参阅SQL Fiddle With Demo

答案 3 :(得分:0)

您只能进行交叉加入。其他联接只能通过相关表来完成。