sql - 酒店预订系统Sql查询?

标签 sql

我想建立一个酒店预订系统。对于这个系统;数据库也用于其他程序......但我有问题:在预订之前,我想看看我的预订有哪些房间类型可用......

我的表创建 sql 查询

CREATE TABLE oteldb.oda (
oda_id INT (11) NOT NULL auto_increment,
oda_tip_id INT (11) DEFAULT NULL,
oda_adi VARCHAR (20) DEFAULT NULL,
PRIMARY KEY (oda_id)
)
ENGINE = MyISAM
AUTO_INCREMENT = 1
CHARACTER SET utf8
COLLATE utf8_general_ci;
CREATE TABLE oteldb.tip (
tip_id INT (11) NOT NULL auto_increment,
tip_adi VARCHAR (20) DEFAULT NULL,
PRIMARY KEY (tip_id)
)
ENGINE = MyISAM
AUTO_INCREMENT = 1
CHARACTER SET utf8
COLLATE utf8_general_ci
ROW_FORMAT = FIXED;
CREATE TABLE oteldb.rezervasyon (
rezervasyon_id INT (11) NOT NULL auto_increment,
rezervasyon_gt DATE DEFAULT NULL,
rezervasyon_ct DATE DEFAULT NULL,
rezervasyon_oda_id INT (11) DEFAULT NULL,
PRIMARY KEY (rezervasyon_id)
)
ENGINE = MyISAM
AUTO_INCREMENT = 1
CHARACTER SET utf8
COLLATE utf8_general_ci;

我试试这个,但不起作用
SELECT
*
FROM
oteldb.tip
WHERE
IN tip.tip_id
(SELECT
oteldb.oda.oda_tip_id
FROM
oteldb.oda
WHERE
IN oda.oda_id note

(SELECT
oteldb.rezervasyon.rezervasyon_oda_id
FROM
oteldb.rezervasyon
WHERE
"2012-01-03" BETWEEN AND rezervasyon_ct rezervasyon_gt
AND "2012-01-22" AND BETWEEN rezervasyon_gt rezervasyon_ct))

现在谢谢...

最佳答案

假设可用房间是在查询期间的任何时间尚未预订的房间,并且rezervasyon_gt和rezervasyon_ct分别是预订开始和结束日期,请尝试:

select t.tip_adi, count(oda.oda_tip_id)
from oteldb.tip t
left join (select oda_tip_id
           from oteldb.oda o
           where not exists
                (select null
                 from oteldb.rezervasyon r
                 where r.rezervasyon_oda_id = o.oda_id and
                       r.rezervasyon_gt <= '2012-01-22' and
                       '2012-01-03' <= r.rezervasyon_ct)
           ) oda on oda.oda_tip_id = t.tip_id
group by t.tip_adi

关于sql - 酒店预订系统Sql查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8913462/

相关文章:

mysql - 查询特定唯一 id 的所有值都相同的情况

mysql query select not in 运行太慢

sql - 将所有记录放在一个字段中

sql - 具有深层次结构的非常慢的 postgresql 查询

sql - 无法更改或关闭 postgres 日志记录

mysql - 返回不是 friend 但一起参加最多事件的用户

sql - 每个 GROUP BY LIMIT SQL 查询

尝试使用 mysqli_connect() 连接到数据库时,PHP 查找数据库时出错

mysql - 如果不满足条件,如何在选定范围中包含上一行

mysql - 简单的 SELECT COUNT SQL 查询错误