使用具有子查询的select查询创建视图

时间:2016-08-04 12:52:57

标签: sql oracle

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

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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