さまざまなテーブルのいくつかの異なる行の合計を取得するビューを作成しようとしています。(これを正しく説明する方法がわかりません)
これが私のテーブルの設定方法です:
訪問者:
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
請求書と呼ばれるビューを作成して、宿泊費の合計とすべてのサービスの費用を確認したいと考えています。
客室料金を取得するには、合計は rooms.price*bookings.bookingdays です。サービスの場合、一致する bookingID の 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;
私が求めているものを手に入れるための助けがあれば(これが意味をなす場合)、感謝します。