我试图建立一个简单的房屋预订系统,我的数据库就像:
TABLE HOUSES
id | name
============
1 | house_1
2 | house_2
TABLE RESERVATIONS
id | id_house | date_start | date_end
=====================================
1 | 2 | 2015-11-02 | 2015-11-10
2 | 1 | 2015-10-02 | 2015-10-15我也不知道如何在新订房的基础上展示预订的房子。
id_house 2 2015-11-05 to 2015-11-20
系统应输出:众议院数字。2是在今天预订的。
发布于 2015-11-17 09:20:19
输入:新预订的日期范围(2015-11-05至2015-11-20)
Output:已为这些日期保留的房屋列表
查询:
SELECT HOUSES.name, HOUSES.id, RESERVATIONS.date_start, RESERVATIONS.date_end
FROM RESERVATIONS
LEFT JOIN HOUSES ON HOUSES.id=RESERVATIONS.id_house
WHERE
RESERVATIONS.date_start < '2015-11-20'
AND
RESERVATIONS.date_end > '2015-11-20'类似的事情,但这取决于你的逻辑(我没有完全理解)。
希望这能有所帮助。
发布于 2015-11-17 09:53:36
请考虑以下几点:
CREATE TABLE reservations
(id INT NOT NULL
,id_house INT NOT NULL
,date_start DATE
,date_end DATE
);
INSERT INTO reservations VALUES
(1,2,'2015-11-02','2015-11-10'),
(2,1,'2015-10-02','2015-10-15');
SELECT *
FROM reservations x
LEFT
JOIN (SELECT '2015-11-05' my_start,'2015-11-20' my_end) y
ON y.my_start < x.date_end
AND y.my_end > x.date_start;
+----+----------+------------+------------+------------+------------+
| id | id_house | date_start | date_end | my_start | my_end |
+----+----------+------------+------------+------------+------------+
| 1 | 2 | 2015-11-02 | 2015-11-10 | 2015-11-05 | 2015-11-20 |
| 2 | 1 | 2015-10-02 | 2015-10-15 | NULL | NULL |
+----+----------+------------+------------+------------+------------+发布于 2015-11-17 09:12:47
试试这个..。
SELECT ho.*,re.* FROM tbl_house AS ho LEFT JOIN tbl_reservation
WHERE now() >= date_start and now() <= date_end希望这能有所帮助。
https://stackoverflow.com/questions/33752904
复制相似问题