Помогите, пожалуйста, составить запрос

  • Автор темы nicecoder
  • Дата начала
N

nicecoder

#1
Добрый день.
Помогите, пожалуйста, составить запрос.
Есть база для каталога автомобилей. В ней имеется 3 таблицы:
options, complitions и options_complitions.
В первой храняться опции комплектаций (например, "Гидроусилитель руля", "ABS", etc...), во второй - названия комплектаций автомобилей, к которым опции принадлежат, а в третьей - храняться id-шники первой и второй таблицы для осуществления связей между ними.
И нужно составить запрос, чтобы выбрать из 3-ей таблицы все id-шники комплектаций (complition_id), каждая из которых должна иметь заданный список опций. Т.е. нужно вывести из таблицы options_complitions поле complition_id, указав в запросе список из option_id.
Например, если бы я хотел вывести список комплектаций, у которых встречаются опции с id-шником 3, 7, и 5, то было бы все просто:
Код:
SELECT complition_id FROM options_complitions WHERE option_id = 3 OR option_id = 7 OR option_id = 5
А вся проблема в том что мне нужно вывести комплектации, у которых эти опции не просто встречаются по одной, а присутствуют все сразу. Т.е. список комплектаций, у каждой из которых есть опции и 3 и 7 и 5. Я думал что это как-то с помощью подзапросов делается, но у меня все равно ничего не выходит.Помогите, пожалуйста, разобраться - я уже 2 дня с этим мучаюсь. Заранее спасибо за ответы. Сами таблицы выглядят следующим образом:
Код:
options:
CREATE TABLE `options` (
`id` int(5) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;

complitions:
CREATE TABLE IF NOT EXISTS `complitions` (
`id` int(5) NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
`price` int(8) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;

options_complitions:
CREATE TABLE `options_complitions` (
`option_id` int(5) NOT NULL,
`complition_id` int(5) NOT NULL,
) ENGINE=MyISAM;