次のような一連の期間があります。
CREATE TABLE `periods` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`start_at` date DEFAULT NULL,
`end_at` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
LOCK TABLES `periods` WRITE;
INSERT INTO `periods` (`id`, `start_at`, `end_at`)
VALUES
(1,'2013-04-29','2013-04-30'),
(2,'2013-05-05','2013-05-10'),
(3,'2013-05-10','2013-05-15'),
(4,'2013-05-15','2013-05-16'),
(5,'2013-05-18','2013-05-19'),
(6,'2013-05-19','2013-05-25');
UNLOCK TABLES;
私の意図した欲求は、特定の期間が 1 つまたは複数の期間で完全にカバーされているかどうかを知るための最も最適化された方法です。
例えば:
1)からまでnull
のリクエストを取得するには、 からまでの期間をカバーしません2013-04-29
2013-05-10
2013-04=30
2013-05-05
2) からの要求の期間 ID (または少なくともtrue
または任意のコンテンツ)を取得2013-05-06
する2013-05-15
2013-05-06
更新: 主な目標は、指定された期間 (例 2 のように からまで2013-05-15
) がレンタル可能かどうかを定義することです。データベースの期間はレンタル可能なシーズンですので、その日のいずれかがカバーされていない場合、滞在全体をレンタルすることはできません.