У меня есть следующие упрощенные таблицы:
CREATE TABLE recipe(id int, name varchar(25));
CREATE TABLE ingredient(name varchar(25));
CREATE TABLE uses_ingredient(recipe_id int, name varchar(25));
Я хочу сделать запрос, который возвращает все идентификаторы рецептов, которые содержат как курицу, так и сливки.
Я пробовал
SELECT recipe_id FROM uses_ingredient INNER JOIN
(SELECT * FROM ingredient WHERE name="Chicken" OR name="Cream")
USING (name) GROUP BY recipe_id
HAVING COUNT(recipe_id) >= (SELECT COUNT(*) FROM theme);
, что дает мне: "ОШИБКА 1248 (42000): каждая производная таблица должна иметь свой собственный псевдоним" и, вероятно, также неверна.
Далее я попробовал
SELECT recipe_id FROM
(SELECT * FROM ingredient WHERE name="Chicken" OR name="Cream") AS t
INNER JOIN uses_ingredient USING (name)
GROUP BY recipe_id HAVING
COUNT(recipe_id)>= (SELECT COUNT(*) FROM t);
, что дает "ОШИБКА 1146 (42S02): таблица 'receedb.t' не существует"
Я хочу избежать создания временных таблиц, в том числе с использованием ENGINE = MEMORY.