困った SQL クエリがあります。基本的に、Recipes
(ご想像のとおり) 多くのレシピを含むテーブルがあります。私はIngredients
あらゆる種類の食材を含むテーブルを持っています。RecipeIngredients
レシピと使用する材料をリンクする表があります。最後に、PopularIngredients
人々がキッチンに持っている可能性のある最も人気のある食材を含む表 (実際にはビューですが、誰が気にしますか?) があります。
CREATE Table Recipes
(
RecipeId int4,
Title varchar(100)
);
CREATE Table Ingredients
(
IngredientId int4,
Name varchar(100)
);
CREATE Table RecipeIngredients
(
RecipeId int4,
IngredientId int4,
Amount int2
);
CREATE Table PopularIngredients
(
IngredientId int4
);
私の目標は、人気のある食材のみを使用したすべてのレシピのリストを取得することです。
サンプル データを含む SQL Fiddle は、ここにあります。
私が探しているのは、Chicken SaladとPancakesを返すクエリです。 人気の食材ではないアリゲーターを使用しているため、アリゲーターバーガーは返品できません。
サブセレクトとALL
キーワードを含むいくつかのことを試しましたが、うまくいきませんでした。さまざまな内部結合と外部結合を試しましたが、少なくとも 1 つの成分が人気がある限り、レシピ行は引き続き表示されます。どんな助けでも大歓迎です!
Postgres 9.1 を使用しています。