我试图创建一个视图来获取各种表中几个不同行的总和。 (我不知道怎么解释这个正确)使用多个表中的总和创建视图(Oracle SQL)
这里是我的表是如何设置的:
访问者:
VISITORID FNAME LNAME PHONE HOTELID
---------- --------------- --------------- --------------- ----------
23 Bella Morgan 0394110625 3
预订:
BOOKINGID HOTELID ROOMNO BOOKINGDATE BOOKINGDAYS BEDANDBREA VISITORID
---------- ---------- ---------- ------------------- ----------- ---------- ----------
28 3 509 28-04-2013 00:00:00 3 Yes 23
客房:
ROOMNO HOTELID ROOMTYPE PRICE
---------- ---------- ------------------------- ----------
509 3 Double 700
Se rvices:
SERVICEID SERVICENAME COST HOTELID
---------- -------------------------------------------------- ---------- ----------
1-CLTH Cloth Cleaning 14.95 1
2-RMSV Room Service 9.95 2
Booking_services:
SERVICEID BOOKINGID
---------- ----------
2-RMSV 32
1-CLTH 32
我想创建一个名为票据观点,让我总房费和所有服务的成本。
要得到房间价格,总和是rooms.price * bookings.bookingdays。 对于服务,它是services表中与booking_services中的SERVICEID匹配的所有行的总和,用于匹配的预订标识号。
当前所有表格中的行数比我所显示的多(所以它不占用太多空间),并且我有一个查询但它只显示2个访问者就像总数一样。我知道这是因为第5行,但我不确定我如何计算以及那些在booking_services中没有排名的人。
下面是查询:
CREATE VIEW bills AS
SELECT v.fname, SUM((r.price*b.bookingdays)+s.cost) AS total
FROM visitors v, rooms r, bookings b, services s, booking_services bs
WHERE v.visitorid = b.visitorid
AND
s.serviceid in(select bs.serviceid from booking_services where bs.bookingid = b.bookingid)
AND
b.roomno = r.roomno
GROUP BY v.fname;
任何帮助得到我之后,我(如果这让任何意义),将不胜感激。
2013-09-30
r_t