2015-12-21 63 views
3

我有兩個具有類似數據的表,我需要查詢表的聯合。我已經改變了我使用只說明問題的實際表名:使用UNION ALL模糊定義的Oracle SQL列所有

SELECT 
    UORD.ORDER_NUM 
FROM 
    (SELECT ORDER_ID, ORDER_NUM, PKG_ID 
    FROM ORDER 
    UNION ALL 
    SELECT ORDER_ID, ORDER_NUM, PKG_ID 
    FROM AMENDING_ORDER) UORD 
    INNER JOIN PLAN ON PLAN.PKG_ID = UORD.PKG_ID; 

我得到

ORA-00918:列定義的含糊

誤差由於INNER JOINPKG_ID

我的實際查詢在訂單項上有多個連接,最初我只是使用第一個表(例如, ORDER,工作正常。

有沒有什麼辦法可以在查詢中定義這種表的聯合,所以它不含糊?

+0

你是否也看到了你顯示的查詢的錯誤?不會認爲這會模棱兩可...... – HoneyBadger

+0

你應該發佈你正在嘗試的實際查詢,因爲發佈的查詢似乎沒有問題 –

+0

如果你拿走最後的連接,會發生什麼? –

回答

0

你可以試試用前綴表名(別名)列名更明確:

SELECT 
    UORD.ORDER_NUM 
FROM 
    (SELECT O.ORDER_ID, O.ORDER_NUM, O.PKG_ID 
    FROM ORDER O 
    UNION ALL 
    SELECT AO.ORDER_ID, AO.ORDER_NUM, AO.PKG_ID 
    FROM AMENDING_ORDER AO) UORD 
    INNER JOIN PLAN ON PLAN.PKG_ID = UORD.PKG_ID; 
0

我已經與數據進一步實驗,這是導致該問題的一些具體列。

數據類型在所有表中都是相同的,但DBA允許相同的列在一個表中可以爲NULLABLE,而不是在另一個表中。

我打算要求他改變這種情況,因爲我幾乎肯定它是錯的,我認爲它會解決這個問題。

+0

這將導致不同的錯誤消息。 –