【问题标题】:Merging three tables with one Primary Key and the result of each table should be displayed one by one用一个主键合并三张表,每张表的结果要一张一张显示
【发布时间】:2016-11-25 19:26:02
【问题描述】:

我有三个表,它们有一个公共字段。我想选择每个表的所有行,按该公共字段排序,结果应该是第一行来自第一个表,第二行来自第二个表,第三行来自第三个表。

什么查询适用于上述任务?给出了三个表的样本数据和所需的输出如下。如果我的问题很笨拙,请见谅!!

TABLE1      
WO      STATUS      SITE
1001    Released    36
1002    Closed      31
1003    Released    42

TABLE2          
WO  LINE NO   PRICE     QTY
1001    1     100        2
1001    2     300        3
1002    1     1500       3
1003    1     100        4
1003    2     200        2
1003    3     100        1

TABLE3      
WO      USER    SIGN ID
1001    Chrish  CRS
1001    Jovan   JVN
1002    Roopesh ROO
1003    Brian   BRN
1003    Suren   SRN
1003    Pavith  PAV

输出应该是这样的

RESULT              
TABLE1  1001    Released    36  
TABLE2  1001    1   100     2
TABLE2  1001    2   300     3
TABLE3  1001    Chrish      CRS 
TABLE3  1001    Jovan       JVN 
TABLE1  1002    Closed      31  
TABLE2  1002    1   1500    3
TABLE3  1002    Roopesh     ROO 
TABLE1  1003    Released    42  
TABLE2  1003    1   100     4
TABLE2  1003    2   200     2
TABLE2  1003    3   100     1
TABLE3  1003    Brian       BRN 
TABLE3  1003    Suren       SRN 
TABLE3  1003    Pavith      PAV 

【问题讨论】:

  • mysql 还是 oracle?选一个。向我们展示您的数据库架构、示例数据和预期输出。请阅读How-to-Ask 这里是START 了解如何提高问题质量并获得更好答案的好地方。
  • 嗨,谢谢..已编辑!!
  • 好多了,但是你的结果格式很奇怪,看起来你的数据多于列。
  • 这可能吗兄弟??
  • 你意识到数据试图加入没有相同的类型?

标签: sql oracle10g


【解决方案1】:
select commonfield, fld1, fld2 from (
    select commonfield, uniquefield1 as fld1, uniquefield2 as fld2, 1 as sort from table1
    union
    select commonfield, uniquefield1, uniquefield2, 2 as sort from table2
    union
    select commonfield, uniquefield1, uniquefield2, 3 as sort from table3
) as qry
order by qry.commonfield, qry.sort

【讨论】:

  • 谢谢哥们!!但是表 2 和表 3 有其他列要显示!!我也需要这些专栏。
  • 编辑显示添加了一些独特的字段。 uniquefield1 可以是所有 3 个表中的不同字段名称,但每个表中的值将显示在同一列中,命名为 fld1 / fld2,如联合中第一个 qry 中定义的那样。
  • 哥们!!我已经编辑了我的问题并添加了一些示例数据供您参考!
【解决方案2】:

SQL DEMO

SELECT 'T1' as source, "WO", "STATUS" as f2, CAST("SITE" AS text)  as f3, null as f4
FROM Table1
UNION
SELECT 'T2' as source, "WO", CAST("LINE NO" AS text) as f2, CAST("PRICE" AS text) as f3, "QTY" as f4
FROM Table2
UNION
SELECT 'T3' as source, "WO", "USER" as f2,  "SIGN ID" as f3, null as f4
FROM Table3 
ORDER BY "WO", source

输出

【讨论】:

    猜你喜欢
    • 2016-11-13
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多