我有一个数据库,其中包含特定的产品和床。每张床的详细信息都存储在一个products
表中,但是我有一个单独的表,product_bedding_sizes
其中包含一张床可以放入的每种尺寸的记录。因此,一张床可能在此表中有五个条目(这是一对多的关系) .
那一点就完成了。但是,在公共网站上,访问者可以搜索产品并将搜索限制在特定的床尺寸。所以我的问题是,我怎样才能获取一系列尺寸并选择所有可能有一个或多个指定尺寸条目的床产品?
一个简化的模式:
CREATE TABLE `products` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB;
CREATE TABLE `product_bedding_sizes` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`product_id` int(10) unsigned NOT NULL,
`size` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `product_id` (`product_id`)
) ENGINE=InnoDB;
ALTER TABLE `product_bedding_sizes`
ADD CONSTRAINT `product_bedding_sizes_ibfk_1`
FOREIGN KEY (`product_id`)
REFERENCES `products` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE;
如果用户选择 90cm 和 120cm,查询的简单英文解释将是:
从
products
表格中选择所有可能有90 厘米或 120 厘米size
的product_bedding_sizes
表格。