0

ビューを使用して、トランスポート データベースからトリップ レッグの詳細を検索する必要があります。

私はそうすることができません。2 区間以下のすべての旅程、つまり 1 つまたは 2 つの目的地を持つ旅程を検索し、旅程番号 (TripNo)、旅程の出発地 (Start)、最初の目的地 (Stop1)、および 2 番目の目的地を表示するクエリを作成する必要があります。宛先 (Stop2) を次の形式で指定します。

 TripNo START STOP1 STOP2
 - - - - - - - - - - - - - - - -
 05 CatmanSt Chinatwon MayflowerSt
 03 MayflowerSt Auckland

それが次の表です。

TRIP( TripNo,LicenseCardNo,CarReg,TRIP_DATE,)
PRIMARY KEY (TripNo),
FOREIGN KEY (LicenseCardNo) REFERENCES DRIVER(LicenseCardNo),
FOREIGN KEY (CarReg) REFERENCES TRUCK(CarReg)

( 1, DR1, 'SJG123', ADD_MONTHS(TRUNC(SYSDATE),0)-135 )
( 2, DR2, 'GBC222', ADD_MONTHS(TRUNC(SYSDATE),0)-135 )
( 3, DR1, 'GBC270', ADD_MONTHS(TRUNC(SYSDATE),0)-133 )
( 4, DR3, 'SJG123', ADD_MONTHS(TRUNC(SYSDATE),0)-130 )
( 5, DR22, 'SJG123', ADD_MONTHS(TRUNC(SYSDATE),0)-130 )
( 6, DR22, 'GBC222', ADD_MONTHS(TRUNC(SYSDATE),0)-124 )

トリプルレッグテーブル

TRIPLEG(  TripNo, LEGNo, DEPARTURE, DSTINATION )    
CONSTRAINT TRIPLEG_PKEY PRIMARY KEY (TripNo, LEGNo),
CONSTRAINT TRIPLEG_UNIQUE UNIQUE(TripNo, DEPARTURE, DESTINATION),
CONSTRAINT TRIPLEG_FKEY1 FOREIGN KEY (TripNo) REFERENCES TRKTRIP(TripNo) );

INSERT INTO TRIPLEG VALUES( 1, 1, 'Armidale', 'Liverpool');
INSERT INTO TRIPLEG VALUES( 1, 2, 'Liverpool', 'Adelaide');
INSERT INTO TRIPLEG VALUES( 1, 3, 'Adelaide', 'Armidale');
INSERT INTO TRIPLEG VALUES( 3, 1, 'MayflowerSt', 'Auckland');
....
INSERT INTO TRIPLEG VALUES( 5, 1, 'CatmanSt', 'Chinatwon');
INSERT INTO TRIPLEG VALUES( 5, 2, 'Chinatwon', 'MayflowerSt');

ビューを使用して実装する必要があります。どうやってするの ?まったく取り出せません。左結合または右結合を使用する必要があります

4

1 に答える 1

0

これはそれを行う必要があります:

select st.tripno, 
       st.departure as "START",
       st.dstination as stop1,
       stp1.dstination as stop2
from tripleg st
  left join tripleg stp1 
         on stp1.tripno = st.tripno 
        and stp1.departure = st.dstination
where st.legno = 1
  and st.tripno in (select tripno
                    from tripleg 
                    group by tripno
                    having count(*) < 3);

ここに SQLFiddle デモがあります: http://sqlfiddle.com/#!4/7f773/1

そこからビューを作成する必要がある場合は、次を実行します。

create or replace view v_short_trips
as
select ...

ビューベースの作成方法の詳細については、マニュアルを参照してください。

于 2012-11-18T14:00:33.500 に答える