nixp.ru v3.0

19 октября 2017,
четверг,
17:41:00 MSK

DevOps с компанией «Флант»
Digger написал 15 февраля 2007 года в 11:18 (369 просмотров) Ведет себя как мужчина; открыл 39 тем в форуме, оставил 251 комментарий на сайте.

Стоит следующая задача(упрощаю очень сильно, но суть именно в этом):

Есть три таблицы.

1. Таблица описывающие некие сервисы, имеет уникальный serv_ID и имя serv_name.

2. Таблица описывающая услуги для конкретного сервиса, имеет usluga_ID и имя usluga_Name

3. Таблица соответствия serv2uslugi, имеет поля serv_ID и usluga_ID. Каждый сервис может иметь как угодно много услуг.

Вопрос: Как максимально проще достать из mysql базы (ver 4) перечень serv_name, для сервисов которые выполняют несколько определенных услуг.

К примеру, задаем пять услуг. Запрос должен достать сервисы у которых все пять услуг возможны.

Пока кроме как доставать иды сервисов по отдельности, а потом убирать ненужные я ничего не придумал. Запрос получается пухлым (при учете того что севисов в базе дофига, и перечисление их идов очень утяжеляет запрос).

metal

Общая идея:

select serv_name from A1 where Serv_ID in ( select serv_id from A3 group by serv_id having usluga_id=id1 and usluga_id=id2 and … );