mysql выборка рецептов по наличию ингридиентов

php MySQL базы данных sql

Здравствуйте!
есть таблица рецептов, таблица ингридиентов и таблица связей рецептов с ингридиентами

таблица рецептов:
recept столбцы: (recept_id, recept_name)


таблица ингредиентов:
ingr столбцы: (ingr_id, ingr_name)


таблица связи рецептов с ингредиентами:
recept_ingr столбцы: (recept_id, ingr_id)

Как можно вывести только те рецепты, в которых присутствуют ингредиенты с ingr_id например 14,18,21 ?
------------
например, если в таблице recept есть записи:
(recept_id, recept_name)
1, ааа1
2, ааа2
3, ааа3

в таблице ingr есть записи:
(ingr_id, ingr_name)
1, ббб1
2, ббб2
3, ббб3
4, ббб4
5, ббб5

в таблице recept_ingr есть записи:
(recept_id, ingr_id)
2, 1
3, 3
3, 4
3, 5
1, 5
1, 3

условие: вывести все рецепты в которых есть ингредиенты с ingr_id = 3 и 5
должно вывести
1, ааа1
3, ааа3
а если с ingr_id = 3 и 4 то только :
3, ааа3

Ответы:
SELECT
   recept_name
FROM
   recept
WHERE
   recept_id in (
           SELECT
               DISTINCT recept_id
           FROM
               recept_ingr
           WHERE
               ingr_id IN ('3', '5')
   );


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.