Мне нужна помощь с сложным запросом MySQL.MySQL выбирает дочерние записи, где все родительские записи имеют одинаковые дочерние записи, за исключением всех остальных дочерних записей.
Эти таблицы и данные:
Ингредиенты
IngredientID | Name 1 | Ketchup
Продукты
ProductID | Name | IngredientID 1 | Bills Amazing Ketchup | 1 2 | Marys Tasty Ketchup | 1
RedFlags
ProductID | RedFlagID 1 | 1 (Gluten) 1 | 2 (Egg) 2 | 1 (Gluten)
кулинарии ингредиент может иметь несколько продуктов. Например, ингредиент Кетчуп может иметь различные типы кетчупа для выбора в магазине.
В этом случае у Кетчупа есть 2 возможных продукта на выбор: «Счета Удивительный Кетчуп» и «Вкусный кетчуп Мэри».
Каждый продукт будет иметь свои собственные диетические красные флаги. Например, Умеренный кетчуп Учета содержит Клейковину и Яйцо, тогда как Мэри Вкусный Кетчуп содержит только глютен, но НЕ яйцо.
Что я хочу сделать, так как против Ингредиента отображаются только красные флаги, которые применимы.
Например, два продукта содержат глютен и только 1 содержит яйцо. Таким образом, яйцо НЕ является красным флагом для ингредиента Кетчупа, потому что продукт, который не содержит яйца, существует, и клиент может купить альтернативу без яиц, поэтому яйцо НЕ должно быть показано как красный флаг против ингредиента.
Однако, поскольку оба продукта содержат клейковину, и нет альтернативы без глютена, поэтому ингредиент должен показывать клейковину как красный флаг.
кетчуп ингредиент должен поэтому показать следующие данные, относящиеся к:
IngredientID | RedFlagID 1 | 1 (Gluten)
Этот запрос должен быть быстрым, потому что база данных будет содержать много продуктов.
Так что я не заинтересован в том, чтобы иметь счет, если это возможно, так как я считаю, что это замедлит его.
Спасибо.