【问题标题】:How to join two unrelated tables in sql如何在sql中连接两个不相关的表
【发布时间】:2012-09-25 00:24:24
【问题描述】:

我有两张桌子:

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

【问题讨论】:

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


    【解决方案1】:

    你想使用CROSS JOIN

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

    【讨论】:

    • 我必须在手机打字方面做得更好。自动更正似乎无法理解 SQL。
    【解决方案2】:

    可以使用两个表的Cartesian Product如下:

    SELECT * FROM Formulas, Context
    

    这将导致M * N 行。

    【讨论】:

    • 如何从两个完全不相关的表中提取特定列?
    【解决方案3】:

    你试过CROSS APPLY:

    select *
    from context
    cross apply formulas
    order by contextid
    

    SQL Fiddle With Demo

    【讨论】:

      【解决方案4】:

      您只能进行交叉连接。其他联接只能对相关表进行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-17
        • 2015-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多