2016-08-04 4 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