搜索查询以查找酒店的成人/儿童入住情况

时间:2018-08-17 11:13:48

标签: php mysql sql

在准备MYSQL查询时需要帮助。

我的数据集如下:

-- Table structure for table `property_guest_type`
CREATE TABLE IF NOT EXISTS `property_guest_type` (
  `id` int(10) unsigned NOT NULL,
  `property_id` int(10) unsigned NOT NULL,
  `singular` varchar(20) NOT NULL,
  `plural` varchar(20) NOT NULL,
  `min_age` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `max_age` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `is_active` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `date_created` datetime NOT NULL,
  `date_modified` datetime NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=614 DEFAULT CHARSET=utf8;

-- Dumping data for table `property_guest_type`
INSERT INTO `property_guest_type` (`id`, `property_id`, `singular`, `plural`, `min_age`, `max_age`, `is_active`, `date_created`, `date_modified`) VALUES
(566, 41, 'Adult', 'Adults', 18, 110, 1, '2018-08-16 10:54:19', '2018-08-16 10:54:19'),
(571, 41, 'Child', 'Children', 3, 17, 1, '2018-08-16 10:55:37', '2018-08-16 10:54:19'),
(574, 41, 'Infant', 'Infants', 0, 2, 1, '2018-08-16 10:56:31', '2018-08-16 10:54:19');

CREATE TABLE IF NOT EXISTS `property_occupancy_rule` (
  `id` int(10) unsigned NOT NULL,
  `property_id` int(10) unsigned NOT NULL,
  `count` tinyint(4) NOT NULL,
  `operator` enum('min','max') NOT NULL,
  `guest_types` varchar(45) NOT NULL,
  `date_created` datetime NOT NULL,
  `date_modified` datetime NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=1605 DEFAULT CHARSET=utf8;

--
-- Dumping data for table `property_occupancy_rule`
--

INSERT INTO `property_occupancy_rule` (`id`, `property_id`, `count`, `operator`, `guest_types`, `date_created`, `date_modified`) VALUES
(1456, 41, 1, 'min', '566', '2018-08-16 10:57:06', '2018-08-16 10:57:06'),
(1466, 41, 4, 'max', '566', '2018-08-16 11:05:02', '2018-08-16 10:57:06'),
(1468, 41, 6, 'max', '566+571', '2018-08-16 11:05:30', '2018-08-16 10:57:06'),
(1470, 41, 8, 'max', '566+571+574', '2018-08-16 11:05:49', '2018-08-16 10:57:06'),
(1469, 41, 8, 'max', '566+574', '2018-08-16 11:05:40', '2018-08-16 10:57:06'),
(1467, 41, 5, 'max', '571', '2018-08-16 11:05:16', '2018-08-16 10:57:06'),
(1471, 41, 7, 'max', '571+574', '2018-08-16 11:06:03', '2018-08-16 10:57:06'),
(1465, 41, 2, 'max', '574', '2018-08-16 11:02:56', '2018-08-16 10:57:06');

...这是相同的SQL提琴,以及我尝试过的示例JOIN查询。

http://sqlfiddle.com/#!9/926f9/5

因此,我的架构中有两个表,它们存储guest_types,然后在另一个表中存储相应的占用规则。

例如,我的来宾类型为“成人,儿童,婴儿”,且具有特定的最大/最小年龄。

根据入住规则,我们可以说一家旅馆/酒店最多可容纳2位成人,3位儿童和1位婴儿。

在前端,我们有成人,儿童和婴儿下拉菜单,并且具有多种添加功能,因此我可以添加任意数量的我喜欢的儿童或成人。

我需要搜索这两个表,以根据搜索条件获取属性ID。

我创建了一个JOIN bsed查询,可以很好地查询成人,但是我想结合或进行一个查询,该查询可以搜索所有成人/儿童和婴儿,并分析是否显示正确的属性。

请告知我如何在单个MySQL查询中达到相同的目的?

0 个答案:

没有答案