DROP TABLE IF EXISTS `RESERVATION`;
CREATE TABLE IF NOT EXISTS `RESERVATION` (
`ID_R` int(8) NOT NULL default '0',
`ID_B` varchar(32) collate utf8_bin NOT NULL default '',
`DATE_ENT` date NOT NULL default '0000-00-00',
`DATE_SOR` date NOT NULL default '0000-00-00',
PRIMARY KEY (`ID_R`),
KEY `FK_BUREAUX` (`ID_B`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;INSERT INTO `RESERVATION` (`ID_R`, `ID_B`, `DATE_ENT`, `DATE_SOR`) VALUES
(1, 1, '2009-05-01', '2009-08-30'),
(2, 1, '2012-09-01', '2015-04-03'),
(3, 2, '2004-09-01', '2012-08-31'),
(4, 3, '2007-01-31', '2012-08-31'),
(5, 3, '2012-05-30', '2012-08-31'),
(6, 4, '2009-08-30', '2012-05-30'),
(7, 5,'2009-01-31', '2010-08-30'),
....
.....预定办公室
假如一个人 需要预定 2010-09-01 ~ 2013-08-31 , 这个时间段的空闲办公室
寻求sql搜索办法 可以得到 :可能是方案1: 办公室5 在 2010-09-01 ~ 2013-08-31 空闲
可能是方案2: 办公室1 在 2010-09-01 ~ 2012-08-31 空闲; 办公室2 在 2012-09-01 ~ 2013-08-31
可能是方案3: 办公室1 在 2010-09-01 ~ 2012-08-31 空闲; 办公室3 在 2012-09-01 ~ 2012-06-01; 办公室4 在 2012-06-01 ~ 2013-08-31请问有可能ma??xiexie dajia!!!
CREATE TABLE IF NOT EXISTS `RESERVATION` (
`ID_R` int(8) NOT NULL default '0',
`ID_B` varchar(32) collate utf8_bin NOT NULL default '',
`DATE_ENT` date NOT NULL default '0000-00-00',
`DATE_SOR` date NOT NULL default '0000-00-00',
PRIMARY KEY (`ID_R`),
KEY `FK_BUREAUX` (`ID_B`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;INSERT INTO `RESERVATION` (`ID_R`, `ID_B`, `DATE_ENT`, `DATE_SOR`) VALUES
(1, 1, '2009-05-01', '2009-08-30'),
(2, 1, '2012-09-01', '2015-04-03'),
(3, 2, '2004-09-01', '2012-08-31'),
(4, 3, '2007-01-31', '2012-08-31'),
(5, 3, '2012-05-30', '2012-08-31'),
(6, 4, '2009-08-30', '2012-05-30'),
(7, 5,'2009-01-31', '2010-08-30'),
....
.....预定办公室
假如一个人 需要预定 2010-09-01 ~ 2013-08-31 , 这个时间段的空闲办公室
寻求sql搜索办法 可以得到 :可能是方案1: 办公室5 在 2010-09-01 ~ 2013-08-31 空闲
可能是方案2: 办公室1 在 2010-09-01 ~ 2012-08-31 空闲; 办公室2 在 2012-09-01 ~ 2013-08-31
可能是方案3: 办公室1 在 2010-09-01 ~ 2012-08-31 空闲; 办公室3 在 2012-09-01 ~ 2012-06-01; 办公室4 在 2012-06-01 ~ 2013-08-31请问有可能ma??xiexie dajia!!!
如果是你的最大分开的时间段有限制,倒还可以使用SQL语句。
mysql> select * from RESERVATION;
+------+------+------------+------------+
| ID_R | ID_B | DATE_ENT | DATE_SOR |
+------+------+------------+------------+
| 1 | 1 | 2009-05-01 | 2009-08-30 |
| 2 | 1 | 2012-09-01 | 2015-04-03 |
| 3 | 2 | 2004-09-01 | 2012-08-31 |
| 4 | 3 | 2007-01-31 | 2012-08-31 |
| 5 | 3 | 2012-05-30 | 2012-08-31 |
| 6 | 4 | 2009-08-30 | 2012-05-30 |
| 7 | 5 | 2009-01-31 | 2010-08-30 |
+------+------+------------+------------+
7 rows in set (0.03 sec)mysql> set @startdate='2010-09-01';
Query OK, 0 rows affected (0.00 sec)mysql> set @enddate='2013-08-31';
Query OK, 0 rows affected (0.00 sec)mysql>
mysql> select ID_B
-> from RESERVATION r
-> where not exists (
-> select 1
-> from RESERVATION
-> where ID_B=r.ID_B
-> and @startdate<=DATE_SOR
-> and @enddate>=DATE_ENT
-> );
+------+
| ID_B |
+------+
| 5 |
+------+
1 row in set (0.00 sec)mysql>
i aready know 方案1... but the other...
thank you all the same..