【问题标题】:Joining data from three views从三个视图连接数据
【发布时间】:2013-05-31 23:44:42
【问题描述】:

我需要将来自 3 个不同视图的数据引入我的结果中。

视图 A 几乎包含我需要的所有数据,但它使用两个字段的主键,我需要从 UI 中提取标识符,所以它看起来像这样:

View A: PortfolioID, SecurityID, then 20 other points I need

View B: PortfolioID, PortfolioCode,

视图 C: 安全ID, 符号

我需要从视图 A 中选择所有数据,但我需要视图 B 中的相应 PortfolioCode 而不是 PortolioID,而不是 SecurityID 我需要视图 C 中的相应符号。

对不起,如果这是非常基本的,我是 SQL 的新手。

谢谢!

【问题讨论】:

    标签: select join multiple-views


    【解决方案1】:

    试试这样的:

    
    
        SELECT a.*, b.PortfolioCode, c.Symbol
        FROM ViewA a
        INNER JOIN ViewB b ON (a.PortfolioID = b.PortfolioID)
        INNER JOIN ViewC c ON (a.SecurityID = c.SecurityID)
    
    

    【讨论】:

    • 我能够让它工作。我遇到的一个我没有想到的问题是每笔交易都有借方和贷方。因此,我实际上在视图 A 中有 securityID1 和 securityID2。两者都需要从同一个视图中提取一个符号 (c),它以 securityid 作为密钥。 ID1 和 ID2 到 c.SecurityId 的内部连接不起作用。
    • 试试这个,如果我正确理解视图的结构。 ` SELECT a.*, b.PortfolioCode, c1.Symbol AS SymbolID1, c2.Symbol AS SymbolID2 FROM ViewA a INNER JOIN ViewB b ON (a.PortfolioID = b.PortfolioID) INNER JOIN ViewC c1 ON (a.SecurityID = c1. SecurityID1) INNER JOIN ViewC c2 ON (a.SecurityID = c2.SecurityID2)`
    【解决方案2】:

    您需要使用连接来完成您所寻找的。

     SELECT ViewA.PortfolioID, ViewA.SecurityID, ViewA.*, ViewB.PortfolioCode, ViewC.Symbol 
        FROM ViewA
        INNER JOIN ViewB on ViewB.PortfolioID = ViewA.PortfolioID
        INNER JOIN ViewC on ViewC.SecurityID = ViewA.SecurityID
    

    您可以详细了解不同类型的联接here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多