私は2つのSQLiteテーブル、レシピ、および成分を持っています。私は原料のリストから2と4の間のレシピをすべて見つけ出す必要がありますが、私はこの仕事をするために私の頭の中で私の頭を得ることはできません。リンクされた範囲のSQL項目
テーブルは以下のとおりです。
CREATE TABLE recipes (
rowidx INTEGER AUTOINCREMENT,
RecipeID TEXT(10) NOT NULL PRIMARY KEY,
Name TEXT(255) NOT NULL
);
CREATE TABLE Ingredients (
Recipe TEXT(10) NOT NULL PRIMARY KEY,
Ingredient TEXT(255) NOT NULL COLLATE NOCASE,
Measurement TEXT(255) NOT NULL
);
私は、単純な何かを始めたが、私は「の間のnとn食材」の部分に来たときに蒸気を使い果たしました。
SELECT COUNT(*) FROM Recipes
WHERE RecipeID IN (
SELECT Recipe FROM Ingredients WHERE Ingredient IN (milk','butter','sugar','flour','egg')
)
これは比較的簡単な方法で行う必要がありますが、クリックしていないと確信しています。
EDIT:私は実際には以下の回答の修正版になってしまった:オリジナルの答えとは異なり
SELECT *,ifnull((SELECT COUNT(i.Ingredient) AS IngredientCount FROM Recipes r LEFT JOIN Ingredients i ON r.RecipeID = i.Recipe WHERE i.Ingredient IN ('flour') and r.recipeid = allrecipes.recipeid GROUP BY R.RecipeID),0) AS IngredientCount
FROM Recipes allrecipes
WHERE IngredientCount BETWEEN 2 AND 4
レシピは何の成分と一致していない、とBETWEEN 0 AND 2
が指定されている場合は、それもしませんソートのためにリストに表示されるので、除外されます。
優れた、ありがとう。私は常にHAVING節を使用しません。 – Echilon