2008-12-06 150 views
0

的我試圖合併的表其是fus_shift和根表到一個新的表,該表是最後的表但在第2行輸出,如「ERROR: ORA-01789:查詢塊具有不正確的結果列數「。我也嘗試加入表作爲我的選擇,但它也輸出「錯誤在第3行:ORA-00918:列模糊定義」。是否有另一種方法來組合和連接兩個不同列數的表,並分別具有相同的列名稱?再次感謝:-)

代碼錯誤:
創建表最終爲
SELECT * FROM fus_shift
工會
SELECT * FROM根;
結合並連接兩個不同的號碼錶。列和相同的列名

代碼錯誤:
選擇record_num,test_num,t_date,t_time,system_type,類別,評論,VAL
從fus_shiftrpt,根
其中record_num = record_num;

我的表:

        fus_shift Table 


      Record_Num  test   date  time   system 
      ----------------------------------------------------------- 
       1   test15  08-11-12 13:20:01 sys23 
       2   test17  08-11-03 14:24:00 sys24 
       3   test13  08-11-13 17:25:04 sys45 
       4   test15  08-11-14 18:24:00 sys67 
       5   test16  08-11-15 19:24:06 sys45 


           root Table 

      Record_Num  category comments validated by 
      --------------------------------------------------- 
        1  dirt  checked  admin 
        2  prog  checked  admin 
        3  dirt  checked  pe 
        4  wires  checked  ee 
        5  prog  repair   admin 

強調文本

回答

3

你當然不能 「聯盟」 適用於你的表。只有當兩個查詢返回相同的數字(以及類似的類型)的列時,才能應用它。

您可以加入這兩個表,但在加入時必須使用「表別名」,因爲「record_num」字段在這兩個表中都是通用的。這裏是會爲工作查詢您

select 
     table1.record_num, 
     table1.test_num, 
     table1.t_date, 
     table1.t_time, 
     table1.system_type, 
     table2.category, 
     table2.comments, 
     table2.val 
from 
     fus_shift table1,root table2 
where 
     table1.record_num = table2.record_num; 
+0

有沒有必要使用表別名來解決查詢; WHERE子句完全可以是'WHERE fus_shift.record_num = root.record_num'。 – 2008-12-06 10:49:46

+0

這也可以工作。如果我們不想使用表別名,除了WHERE子句,我們還必須使用表名解析SELECT子句中的公共字段。 – MOZILLA 2008-12-06 14:54:09

1

我會用下面的方法:

SELECT * 
FROM fus_shift 
INNER JOIN root ON root.record_num = fus_shift.record_num 
相關問題