我的sqlite数据库出了问题。我正在尝试编写一个查询,为特定的访客(guestID)生成总帐单
访客
预订
房间
ROOMTYPE
我知道我必须从Reservation.checkin中减去Reservation.checkout以获取天数,然后将其乘以RoomType.price以便给我一个总账单。那么我如何编写我的sql查询来为特定的访客(guestid)提供总账单?我知道你最多可以加入三个表,但我不知道如何加入这四个表。请帮忙。提前谢谢。
答案 0 :(得分:0)
加入这四个表只是匹配列,然后一切都到位:
select ...
from guest
join reservation on guest.guestid = reservation.guestid
join room on reservation.roomnumber = room.roomnumber
join roomtype on room.roomtypeid = roomtype.roomtypeid
where guest.guestid = ?
...
如果您不需要访客姓名,则只需加入三个表:
select ...
from reservation
join room on reservation.roomnumber = room.roomnumber
join roomtype on room.roomtypeid = roomtype.roomtypeid
where reservation.guestid = ?
...
答案 1 :(得分:0)
在sql中有2种方式是1,在应用程序级别中有1种方式 1)sql:
SELECT g.*, ((strftime('%s',r.CheckOUT) - strftime('%s',r.CheckIN)) * rt.Price/24/60/60) AS total
FROM GUEST g, RESERVATION r, ROOM rm, ROOMTYPE rt
WHERE g.GuestID = r.GuestID AND r.RoomNumber = rm.RoomNumber AND
rm.RoomTypeID = rt.RoomTypeID
您可以根据需要修改您的需求,基本上该语句是获取来宾表中的列并计算他/她需要支付的价格,方法是减去签出和签入日期(以秒为单位)并乘以价格降低到每秒
2)应用级别: 您可以运行2个sql语句来获取特定客户的特定房间的价格。 用您使用php / ruby / java等语言进行价格计算。