3个表之间的SQL查询
我有3个表,注意这可能不是最好的sql db设计3个表之间的SQL查询,sql,select,distinct,contains,Sql,Select,Distinct,Contains,我有3个表,注意这可能不是最好的sql db设计 Room: TypeName, RoomNumber RoomType: TypeName, ... Reservation: StartDate, EndDate, TypeName, RoomNumber 我的输入参数是startdate和enddate。我想知道有哪些不同的房间类型。根据我的理解,解决方案是这样的:AvailableRoomTypes=AllRoomTypes-UnavailableRoomTypes 显然,可以通过以下方
Room: TypeName, RoomNumber
RoomType: TypeName, ...
Reservation: StartDate, EndDate, TypeName, RoomNumber
我的输入参数是startdate和enddate。我想知道有哪些不同的房间类型。根据我的理解,解决方案是这样的:AvailableRoomTypes=AllRoomTypes-UnavailableRoomTypes
显然,可以通过以下方式找到所有RoomType:从Room中选择DistincTypeName;
我知道如何获得不可用的房间,但不知道不可用的房间类型。我也不知道如何从一组中减去另一组。我可以得到一组所有房间+房间类型和另一组不可用的房间+房间类型,但我如何加入它们,使其成为a-B?也许是某种不包含函数的东西
我希望我的输出参数是从RoomType中选择*以获得合适的RoomType。未使用的RoomType
select RT.*
from RoomType RT
where RT.TypeName not in (
Select RM.TypeName
from Room RM
)
进行A-B选择的一种方法不在选择中。。运算符,不存在选择。。是另一个,我敢肯定还会有更多。房间:类型名称,房间号房间类型:类型名称。。。预订:开始日期、结束日期、类型名称、房间号
这可能是你的答案。。。
选择rt.typename
来自r房间、rt房间类型、re预订
其中r.typename=rt.typename
和rt.typename=re.typename
其中re.startdate=:开始日期
和re.enddate=:endate您不想使用联合-SUMreservation.roomtype和SUMservice.servicetype是不同的属性。但是如果您这样做了,您可能希望使用null来偏移查询,这样列就不会重叠。即:
SELECT SUM(reservation.roomtype), NULL ...
UNION ALL
SELECT NULL, SUM(service.servicetype) ...
根据您提供的逻辑,我提出了以下查询:
SELECT SUM(r.roomtype),
SUM(s.servicetype)
FROM RESERVATION r
JOIN BILL b ON b.reservationid = r.reservationid
AND b.paid = 1
JOIN SERVICE s ON s.serviceid = b.serviceid
这将返回一行。为了返回更有意义的结果集,我们需要知道依赖于信息组的查询是什么。预订和服务表的详细信息将有助于我们为您提供帮助 什么数据库,你能让它更清楚什么是表,它的列是什么吗?这里是我所拥有的:选择r.roomtype,s.servicename FROM RESERVATION r JOIN BILLING b ON b.reservationid=r.reservationid,b.paid=1 JOIN Customer\u SERVICE s ON s.customerserviceid=b.customerserviceid;我需要计算每个不同预订的billing.total.roomtype和customer_service.servicename的总和。所以我想:为预订选择SUMb.total。。。加入服务的Select SUMb.total@Russ Cam:我不知道什么是“差异联盟”,谷歌表示它也不知道!你愿意为OP的问题贴出一个能证明“差异联盟”的答案吗?但你的观点是正确的,我的回答听起来绝对正确,好像“不开”是解决OP问题的唯一方法。我会重新措辞!tsql中的差异联合:选择废话废话,除了选择废话废话。由于某种原因,这是我无法轻易找到的最终逻辑,尽管它看起来相当基本
SELECT SUM(r.roomtype),
SUM(s.servicetype)
FROM RESERVATION r
JOIN BILL b ON b.reservationid = r.reservationid
AND b.paid = 1
JOIN SERVICE s ON s.serviceid = b.serviceid