使用视图显示FlightTrip和FlightStop详细信息

时间:2012-11-19 14:09:12

标签: sql relational-database

我想从特定的表中提取数据。然而,约束是我需要u 2个关系视图来获取数据。我可以在不使用视图的情况下获取数据,但要求是使用视图。我是db的新手。我希望你们能帮助我。因此,我认为我需要使用2个表中的数据。但根据我的理解,我不认为我需要使用2个表。希望你们的建议。正如我之前所说,我需要使用2个视图来提取数据。

 FlightTripNo Departure Destination FinalDestination
 - - - - - - - - - - - - - - - -
 05 Singapore Bangalore Chennai
 03 Sdyney Auckland

这是下表。

FLIGHTTRIP( FlightTripNo,PlaneNo)
PRIMARY KEY (FlightTripNo),

( 1, JET348)
( 2, TR1313)
( 3, TR287)
( 4, MY871P)
( 5, SQ777)
( 6, AI322X)

FLIGHTSTOP TABLE

FLIGHTSTOP(  FlightTripNo, FlightStopNo, DEPARTURE, DESTINATION )    
PRIMARY KEY (FlightTripNo, FlightStopNo)
UNIQUE UNIQUE(FlightTripNo, DEPARTURE, DESTINATION)
FOREIGN KEY (FlightTripNo) REFERENCES FLIGHTTRIP(FlightTripNo)

INSERT INTO FLIGHTSTOP VALUES( 1, 1, 'Singapore', 'Malaysia');
INSERT INTO FLIGHTSTOP VALUES( 1, 2, 'Malaysia', 'Chennai');
INSERT INTO FLIGHTSTOP VALUES( 1, 3, 'Chennai', 'Bangalore');
INSERT INTO FLIGHTSTOP VALUES( 3, 1, 'Syndey', 'Auckland');
INSERT INTO FLIGHTSTOP VALUES( 5, 1, 'Singapore', 'Bangalore');
INSERT INTO FLIGHTSTOP VALUES( 5, 2, 'Bangalore', 'Chennai');
......
Total 400 records

我在没有使用视图的情况下做了多远。但我需要使用视图。和2视图。请指教。

 SELECT FLIGHTSTOP.FlightTripNo,FLIGHTSTOP.FlightStopNo, FLIGHTSTOP.DEPARTURE AS ORIGIN,  FLIGHTSTOP.DESTINATION AS DESTINATION1, T2.DESTINATION AS DESTINATION2
 FROM FLIGHTSTOP LEFT JOIN FLIGHTSTOP T2 ON FLIGHTSTOP.FlightTripNo = T2.FlightTripNo AND   FLIGHTSTOP.DEPARTURE = T2.DEPARTURE
 WHERE FLIGHTSTOP.FlightTripNo IN (SELECT FlightTripNo FROM FLIGHTSTOP
                GROUP BY FlightTripNo
                HAVING COUNT(*) < 3)
                ORDER BY FLIGHTSTOP.FlightTripNo;

1 个答案:

答案 0 :(得分:0)

正如@NWest所说,view是一个像表一样的数据库对象。但它本身并不存储任何数据。视图的概念实际上是存储SQL语句。使用视图存储复杂的sql语句有助于更复杂的查询。此外,它还可以直接在视图上执行SELECT语句。例如:

create view emp_dept as select empno, ename, sal, dept.deptno, dname from emp, dept
where emp.deptno = dept.deptno and deptno=10;

现在创建一个名为emp_dept的视图。您可以像表一样通过以下语句查询视图。您可以将此视图与另一个视图或表格结合使用。

select ename, sal from emp_dept where sal>2000.

我希望你有了一个观点的想法。现在使用这个概念作为你的例子。