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 Point。

谁能指导我如何在显示员工姓名和我的函数 LONGPT 时执行选择语句。

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 回答