Гипотетически у меня три таблицы: * recipes — содержит рецепты * ингредиенты — список предметов * блюда — список блюд
У меня есть форма, которая генерирует выбор, например:
Choose what ingredients you have:
- apples
- bananas
- cherries
Choose the meal this is for:
- breakfast
- lunch
- dinner
Я хочу, чтобы пользователь мог выбирать из вышеперечисленного или ни из одного, т. е. он мог выбрать яблоки ИЛИ вишни ИЛИ (бананы и обед)
Когда я запрашиваю MySQL, мой запрос примерно
select recipes.* from recipes
or
select recipes.* from recipes, ingredients
where recipes.id= ingredients.id and ingredients.list in ('apple');
or
select recipes.*
from recipes, ingredients, meal
where recipes.id= ingredients.id
and ingredients.list
and ingredients.id = meals.id
and ingredients.list ('apple')
and meals.list in ('lunch');
Есть ли хороший способ сказать (в PHP), если этот массив существует (т.е. is_array(ингредиенты) добавить в запрос таблицу (ингредиенты) и в конце добавить (".ingredients.list в ("яблоко")). ..
без необходимости записывать все возможные комбинации или возможные входные данные (т. е. выбранные пользователем из списка ингредиентов, или из списка ингредиентов и блюд, или из списков)?