sql - Oracle:视图内的函数
问题描述
我正在尝试建立一个酒店管理系统。每次客户预订房间时,都会在 TAKEN 中插入一行,其中包含takenid
、和。然后客户在该房间内使用的每个产品都会在表格中插入一行以供以后计费。最后,当客户结帐时,会将一行插入到具有前一行的表中,用于计算客户必须通过视图支付的总金额。我要创建的视图包括像这样的列customerid
roomid
startday
SALE
BILL
takenid
endday
房间号(roomid
在ROOM
表格中查找),
startday(在 TAKEN 表中),endday(在BILL
表中),
员工employid
姓名(在EMPLOYEE
表中查找),
totalproductprice(通过基于 计算 SALE 表中销售的所有产品takenid
),
总计(必须支付的总金额)
这使得该视图的复杂性超出了我的 SQL 连接表的能力,因此我决定使用函数将值作为这些列返回,就像在 MySQL 中一样。我想知道是否有办法在 Oracle 中做到这一点?
解决方案
您可以按如下方式创建视图:
CREATE OR REPLACE VIEW VW_HOTEL_MANAGEMENT AS
SELECT R.roomno, t.startday,e.name,
(SELECT SUM(AMOUNT) FROM SALE
WHERE TAKENID = T.TAKENID
GROUP BY TAKENID) TOTALPRODUCTPRICE,
((SELECT TRUNC(B.ENDDAY - T.STARTDAY)*RT.PRICE
FROM BILL B, ROOMTYPE RT, ROOM R
WHERE r.type = rt.type
AND r.roomid = b.billid
AND b.takenid = T.TAKENID
AND B.EMPLOYID = E.EMPLOYID)
+ (SELECT SUM(AMOUNT) FROM SALE
WHERE TAKENID = T.TAKENID
GROUP BY TAKENID)) TOTAL
FROM ROOM R, TAKEN T, EMPLOYEES E
WHERE t.roomid = r.roomid;
推荐阅读
- javascript - 提取存储在字符串中的数据
- laravel - 如何获取语言环境(语言)的名称,而不仅仅是语言环境字符串,而是 LARAVEL 中该语言的名称?
- javascript - 如何通过 Java 脚本调用 Angular 组件
- c# - 多语言实体映射
- .net - Azure 应用程序网关返回随机 502 错误
- jquery - 如何在谷歌地图中使用链接
- keras - 将 keras h5 模型文件转换为 tflite 的问题 - 类型错误('关键字参数不理解:','插值')
- pandas - if nan python pandas循环
- javascript - javascript:正则表达式模式
- ember.js - ember中如何处理非模型数据