製品、具体的にはベッドを含むデータベースがあります。各ベッドの詳細はproducts
テーブルに保存されますが、ベッドが収容できる各サイズのレコードを保持する別のテーブルがありproduct_bedding_sizes
ます。したがって、1 つのベッドはこのテーブルに 5 つのエントリを持つ場合があります (これは 1 対多の関係です)。 .
そのビットは完了です。ただし、公開 Web サイトでは、訪問者は製品を検索し、検索を特定のベッド サイズに制限することができます。私の質問は、サイズの配列を取得して、指定されたサイズのエントリが 1 つ以上あるベッド製品をすべて選択するにはどうすればよいですか?
簡略化されたスキーマ:
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 を選択した場合、クエリの平易な英語の説明は次のようになります。
90cmまたは120cmの表に
products
ある可能性のある表からすべて選択してください。size
product_bedding_sizes