Сделал 3 таблицы
таблица obj(все продукты) - тут bro_id(cчетчик), bro_name (тег продукта) ...

таблица tag_obj(сопоставление продуктов рецептам) - автоинкрементный link_id (счетчик), link_obJ_(id рецепта), link_tag(id тэг продукта)

таблица holodilnik(авторские теги продуктов) h_id(счетчик), h_userid. h_tag(id тэг продукта)

Как видно есть рецепты:
форель в собств соку (2-й id рецепта)
форель в белом соусе (1-й id рецепта)
У юзера есть продукты: форель, белый соус.
Нужно как-то обработать все это дело и выдать эти 2 рецепта, но если у человека нет хоть одного ингредиента(например зеленого горошка link_tag =3), все, рецепт не показываем.
Я сначала пробовал делать так:
SELECT * FROM `tag_obj` WHERE `link_tag` IN (1, 2);
Затем в цикле по каждому рецепту искал количество записей и сопоставлял с продуктами пользователя, но оно либо смешивалось со всем остальным либо показывало рецепты не смотря на то что продуктов не хватает, там такая каша что даже код писать не буду, может есть более простые решения без циклов?