【问题标题】:fetch different columns from two tables and combine the results从两个表中获取不同的列并组合结果
【发布时间】:2014-12-13 06:00:36
【问题描述】:

我想将两个不同的表组合成 oracle。 条件:

  1. 从两个表的 ID 中,STAMp 列都是公共列。
  2. 其余列不同。

表1;

Element_ID  STAMP           Col1     Col2 
1           22/03/2014     85         100

2           22/03/2014     95         105

表2。

Element_ID   STAMP        Col3      Col4

5            22/03/2014     100      110
6            22/04/2014     200      210

结果:

Element_ID  STAMP        Col1    Col3

1           22/03/2014   85       null
5           22/03/2014   null     100

查询:

Select Element_ID, Stamp, Col1 from Table1 where element_ID in (1, 5)

Select Element_ID, STAMP, Col3 from Table2 where Element_ID in (1,5)

如何结合以上两个查询结果,结果应如上格式。

【问题讨论】:

  • 请版主格式化代码部分。我认为在结果中有 2 行显示在单行中。
  • 为什么Col122/03/2014 的结果集中为空,而在Table1 中有匹配部分(实际上是两个)?

标签: oracle oracle10g


【解决方案1】:

你可以这样试试,

Select Element_ID, Stamp, Col1, NULL Col3 from Table1 where element_ID in (1,5)
union
Select Element_ID, STAMP, NULL Col1, Col3 from Table2 where Element_ID in (1,5)

【讨论】:

    【解决方案2】:
    Select T1.Element_ID,T1.Stamp, T1.Col1, T2.Col3 
       from Table1 T1, Table2 T2 
          where T1.Element_ID in (1, 5)
    

    【讨论】:

    • 这不会获取任何结果,因为 T1 中没有 element_id = 5。由于同样的原因,T1.Element_ID = T2.Element_ID 上的连接也没有用。您可能会考虑添加外部连接。
    • 考虑到RESULT中的错误,我写了这个。据我所知,就像Element_ID STAMP Col1 Col3 1 22/03/2014 85 null 5 22/03/2014 null 100 两个不同的行
    • 是的,同意,检查 T1.Element_ID = T2.Element_ID 在这里没有价值。我弄错了。
    【解决方案3】:

    这是RIGHT JOIN 在某个最小集上的一个有趣用例——既将结果限制为记录 1 和 5,又强制存在这两个记录:

    SELECT "Element_ID", "STAMP", "Col1", "Col3"
    FROM Table1
    FULL OUTER JOIN Table2
    USING("Element_ID", "STAMP")
    RIGHT JOIN
    (
      SELECT 1 "Element_ID" FROM DUAL
      UNION ALL SELECT 5 FROM DUAL
    ) MinimumSet
    USING("Element_ID")
    

    查看http://sqlfiddle.com/#!4/725d9/18 以获取实时示例

    【讨论】:

      猜你喜欢
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 1970-01-01
      • 2018-12-02
      • 2018-05-07
      • 2014-01-19
      相关资源
      最近更新 更多