Oracle SQL - 从两个表中选择

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/6455871/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-19 00:04:08  来源:igfitidea点击:

Oracle SQL - Select from two tables

sqloraclejoin

提问by user812418

I have two tables which are exactly the same layout, but have different data (one is current, one is history).

我有两个布局完全相同的表格,但有不同的数据(一个是当前数据,一个是历史数据)。

How do I pull information from both tables?

如何从两个表中提取信息?

PSUDO SQL:

伪 SQL:

SELECT 
    T.TRANS_QUAN,
    P.PONO, D.ID
FROM 
    TRANSLOG T, (select * from PO, PO_HIST) P, (SELECT * FROM PO_DETAIL, PO_DETAIL_HIST) D
WHERE 
    D.PO_ID = P.ID
    AND T.SOURCE_ID = D.ID

When I try to actually run that I get "column ambiguously defined"

当我尝试实际运行时,我得到“列定义不明确”

回答by Chandu

You can UNION clause.

您可以使用 UNION 子句。

Try:

尝试:

SELECT 
        T.TRANS_QUAN,
        P.PONO, D.ID
    FROM 
        TRANSLOG T, 
            (
                SELECT * FROM PO
                UNION
                SELECT * FROM PO_HIST
            ) P,
         (
            SELECT * FROM PO_DETAIL
            UNION
            SELECT * FROM PO_DETAIL_HIST
         ) D
    WHERE 
        D.PO_ID = P.ID
        AND T.SOURCE_ID = D.ID

回答by Benoit

(select * from PO, PO_HIST) P

This subquery might make a cross join of tables that share a common column name.

此子查询可能会对共享公共列名的表进行交叉联接。

Maybe you want:

也许你想要:

Select t.trang_quan
     , p.pono
     , d.id
  from translog t
  inner join po_detail d
     on d.id = t.source_id
  cross join po_detail_hist
  inner join po p
     on p.id = d.po_id
  cross join po_hist p2

Are you sure you want cross joins?

您确定要交叉连接吗?