さまざまなテーブルのいくつかの異なる行の合計を取得するビューを作成しようとしています。(これを正しく説明する方法がわかりません)
これが私のテーブルの設定方法です:
訪問者:
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;
私が求めているものを手に入れるための助けがあれば(これが意味をなす場合)、感謝します。