0

私は4つのテーブルを持っています

  • EMPLOYEE( E#, NAME)、主キーはE#
  • DRIVER( E#, L#)、主キーはE#参照ですEMPLOYEE
  • TRIP( T#, L#)、主キーはT#、外部キーL#参照DRIVER
  • TRIPPT( T#, PT#) 主キーはT#参照ですTRIP

ドライバーが実行する最長ポイントの長さ (pt# の総数) を見つける関数を作成しました。

これまでの私のクエリ:

create or replace function LONGPT (DL# in TRIP.L#%type)
   return TRIPPT.PT#%type
IS
   TRIPPT#   TRIPPT.PT#%type;
begin
   select max (PT#)
     into TRIPPT# 
     from TRIPPT
    where T# in (select T#
                   from TRIP
                  where L# = DL#);

   return nvl (TRIPPT#, 0);
end LONGPT;

NAME選択クエリを実行して、従業員の LONGPTを表示するにはどうすればよいですか。トリップポイントを実行しないドライバー名もクエリに含める必要があります。

私が試してみました:

SELECT DRIVER.L# AS License_No, LONGTPT(TRIP.L#) AS "LONGEST POINT" 
FROM DRIVER 
   LEFT OUTER JOIN TRIP on DRIVER.L# = TRIP.L#;

これは、L# と LONGEST ポイントのみを照会します。

従業員の名前を表示し、私の関数 LONGPT を使用して select ステートメントを実行する方法を教えてください。

4

1 に答える 1

0

これが私が把握することができた作業クエリです。

SELECT DISTINCT EMPLOYEE.NAME, LONGPT(TRIP.L#) AS "LONGEST Point"
FROM DRIVER Join EMPLOYEE ON DRIVER.E# = EMPLOYEE.E# LEFT OUTER JOIN 
TRIP on DRIVER.L# = TRIP.L#; 
于 2012-11-27T02:23:35.757 に答える