2016-08-04 84 views
-2
CREATE OR REPLACE VIEW SAMPLE_VIEW(MISSION_ID,"ESMP TRACK NO","RFPS TRACK NO","RADAR ID") 
AS 
SELECT ESMP.MISSION_ID,ESMP.TRACK_NO,RFPS.RFPS_TRK_NO, 
     (SELECT RADAR_ID 
     FROM MATCHED_TT_DETAILS TT1 
     WHERE TT1.MISSION_ID = ESMP.MISSION_ID 
      AND TT1.TRACK_NO = ESMP.TRACK_NO) 
FROM ESMP_DETAILS ESMP, 
    RFPS_DETAILS RFPS 
WHERE ESMP.MISSION_ID = RFPS.MISSION_ID 
    AND ESMP.TRACK_NO = RFPS.ESMP_TRACK_NO; 

我創建了上述視圖,並且出現錯誤。使用具有子查詢的選擇查詢創建視圖

ESMP_DETAILS表:

MISSION_ID TRACK_NO 
A   4 
B   5 
C   6 

RFPS_DETAILS表:

MISSION_ID  RFPS_TRK_NO 
A    77 
B    88 

MATCHED_TT_DETAILS表:

MISSION_ID   RADAR_ID 
A     5 
A     6 
B     4 

我要像下面的輸出鑑於

MISSION_ID TRACK_NO RFPS_TRK_NO RADAR_ID 
A    4   77   5 
A    4   77   6 
B    5   88   4 
+7

CAPSLOCK是不是你的朋友。請停止呼喊。如果你得到一個錯誤,爲什麼你沒有發佈錯誤信息呢? – HoneyBadger

+0

而錯誤是? –

+0

錯誤是:\t ORA-01427:單行子查詢返回多個行 –

回答

0

試試這個,

CREATE OR REPLACE VIEW SAMPLE_VIEW("MISSION_ID","ESMP TRACK NO","RFPS TRACK NO","RADAR ID") 
AS 
SELECT mat.mission_id, 
     esmp.track_no, 
     (SELECT rfps.rfps_trk_no FROM rfps_details rfps WHERE rfps.mission_id = mat.mission_id), 
     mat.radar_id 
FROM matched_tt_details mat JOIN esmp_details esmp ON mat.mission_id = esmp.mission_id; 
+0

爲什麼仍然使用子查詢,而不是隻加入三個表?如果'mission_id'有多個'rfps_details'行,這仍然會出錯;我不確定你可以從微小的數據樣本中認定情況總是如此。 –

+0

在我看來,我有近30列,我必須從10個表中獲取數據,並從查找表中獲取一些列數據。 –

0

嘗試......

CREATE OR replace VIEW sample_view 
AS 
    SELECT ESMP.mission_id, 
     ESMP.track_no, 
     RFPS.rfps_trk_no, 
     TT.radar_id 
    FROM esmp_details ESMP, 
     rfps_details RFPS, 
     matched_tt_details TT 
    WHERE ESMP.mission_id = RFPS.mission_id 
     AND RFPS.mission_id = TT.mission_id