我正在尝试创建一个视图,以获取各种表中几个不同行的总和。(我不确定如何正确解释这一点)
这是我的表格的排列方式:
访客:
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
服务:
SERVICEID SERVICENAME COST HOTELID
---------- -------------------------------------------------- ---------- ----------
1-CLTH Cloth Cleaning 14.95 1
2-RMSV Room Service 9.95 2
预订服务:
SERVICEID BOOKINGID
---------- ----------
2-RMSV 32
1-CLTH 32
我想创建一个名为 bills 的视图,它为我提供房间成本和所有服务的总成本。
要获得房价,总和是 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;
任何帮助获得我所追求的东西(如果这有任何意义)将不胜感激。