Oracle SQL - 从两个表中选择

时间:2011-06-23 14:38:08

标签: sql oracle join

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

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

PSUDO 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

当我尝试实际运行时,我得到“列模糊定义”

2 个答案:

答案 0 :(得分:2)

你可以使用UNION子句。

尝试:

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

答案 1 :(得分:0)

(select * from PO, PO_HIST) P

此子查询可能会共享一个共同列名的表的交叉连接。

也许你想要:

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

您确定要进行交叉连接吗?