SET TERMOUT ON
DROP VIEW BP_VIEW;
CREATE VIEW BP_VIEW AS
SELECT b.BOOKINGID,
g.GUESTID,
g.FORENAME, g.SURNAME,
br.FLOORNO, br.ROOMNO,
r.TYPE,
b.TOTALPRICE + (rt.RATE*(b.DEPARTDATE - b.ARRIVEDATE)) AS TOTAL_AMOUNT_DUE
FROM GUEST g, ROOM r
INNER JOIN BOOKING b ON b.BOOKINGID = GUESTID
INNER JOIN BOOKINGROOM br ON b.BOOKINGID = br.BOOKINGID AND r.FLOORNO = br.FLOORNO AND r.ROOMNO = br.ROOMNO
INNER JOIN ROOMTYPE rt ON rt.TYPE = r.TYPE
WHERE (CURRENT_DATE BETWEEN b.ARRIVEDATE AND b.DEPARTDATE);
SELECT * FROM BP_VIEW;
COMMIT;
SET TERMOUT ON
好傢伙日,比較在Oracle的sqlplus
我試圖執行上面的代碼,它執行罰款,但它是否選取更新某些預訂不落入B之間CURRENT_DATE的類別.ARRIVEDATE和b.DEPARTDATE。
有了這個聲明,我試圖找到最新的預訂信息,而不是過去的預訂。
執行代碼時,結果並非我所期望的。我是否正確地完成了該部分?
什麼樣的數據類型'ARRIVEDATE'和'DEPARTDATE'? – 2013-03-22 11:53:59
不知道它是否會解決,但'ROOM'和'ROOMTYPE'連接在一起,但不能連接到任何其他表。似乎你錯過了'BOOKINGROOM'和'ROOM'之間的連接。 – JWK 2013-03-22 11:54:18
@JWK - 很好的結果。它顯示了編寫顯式連接而不是保持這種隱式連接語法要好得多。 – 2013-03-22 11:56:14