私のデータベースには以下の3つのテーブルがあり、私が望む結果を得るためにいくつかの問題を抱えています。私は食材でレシピを検索しようとしています。レシピデータベース、成分による検索
SQLフィドル:ここFiddle
は私のテーブルです: 成分
+---------------+---------+
| ingredient_id | name |
+---------------+---------+
| 1 | tomato |
| 2 | onion |
| 3 | rice |
| 4 | chicken |
| 5 | beef |
| 6 | noodles |
| 7 | salt |
+---------------+---------+
レシピ
+-----------+------------------+
| recipe_id | name |
+-----------+------------------+
| 1 | tomato goodness |
| 2 | meat deluxe |
| 3 | chicken surprise |
+-----------+------------------+
Ingredient_Index
+-----------+---------------+
| recipe_id | ingredient_id |
+-----------+---------------+
| 1 | 1 |
| 1 | 5 |
| 1 | 7 |
| 2 | 5 |
| 2 | 6 |
| 2 | 7 |
| 3 | 4 |
| 3 | 3 |
| 3 | 7 |
+-----------+---------------+
私が達成したいのは、指定された成分を使って作ることができるすべてのレシピをフィルターにかけることです。そして、ここで問題が来る:
このクエリ:私はレシピのいずれかを行うのに十分な材料を持っていないので、
select DISTINCT r.name
from
recipes r
inner join ingredient_index i
on i.recipe_id = r.recipe_id
where i.ingredient_id IN (2, 7, 5);
は、私の誤った結果が得られますが、それでも私は、私はすべてを作ることができる結果を得ますそのうちの。それはrecipe_idのIngredient_Indexのテーブルが複製されているために発生します。
何か助けていただければ幸いです。
すべての成分を計量するか、成分が欠けていないことを確認してください。 – jarlh
どうすればいいか教えてください。私はこれを理解するのに苦労している。 – Deividas
それは非常に興味深い質問でした。私は学生の次のテストに入れます:-) – Cynical