【发布时间】:2010-12-21 08:33:54
【问题描述】:
我有 3 个表(注意这可能不是最好的 sql db 设计)
Room: TypeName, RoomNumber
RoomType: TypeName, ...
Reservation: StartDate, EndDate, TypeName, RoomNumber
我的输入参数是startdate和enddate。我想知道不同的roomtypes 可用。据我了解,解决方案是这样的:AvailableRoomTypes = AllRoomTypes - UnavailableRoomTypes
显然AllRoomTypes 可以通过以下方式找到:SELECT DISTINCT(TypeName) FROM Room;
我知道如何获得不可用的房间,但不是不可用的roomtypes。我也不知道如何从另一组中减去一组。我可以得到一组所有的rooms+roomtypes 和另一组不可用的rooms+roomtypes,但是我如何加入它们使得它是A-B?也许某种NOT_CONTAINS 函数?
我希望我的输出参数为SELECT * FROM RoomType (for the appropriate roomtypes)。
【问题讨论】:
-
什么数据库,你能更清楚什么是表,什么是列?
-
这就是我所拥有的:SELECT r.roomtype, s.servicename FROM RESERVATION r JOIN BILLING b ON b.reservationid = r.reservationid AND b.paid = 1 JOIN Customer_SERVICE s ON s.customerserviceid = b .customerserviceid;我需要为每个不同的 reservation.roomtype 和 customer_service.servicename 汇总 billing.total。那么我是否要:选择 SUM(b.total) 进行预订...加入选择 SUM(b.total) 进行服务...?
标签: sql select distinct contains