3

私はカクテルデータベースを作成していますが、現在3つのテーブルがあります。

  • 飲み物にはdrinks_id列とdrinks_name列があります
  • 材料には、components_id列とcomponents_name列があります
  • 3つ目は、drinks_idとcomponents_idを持つレシピと呼ばれる単純な関係テーブルです。

一連のcomponent_idsを使用してデータベースにクエリを実行し、その一連の材料から利用可能な一連の飲み物を取得したいと思います。たとえば、飲み物Aに成分(1,2)が含まれ、飲み物Bに(1,3)が含まれ、飲み物Cに(1,2,3)が含まれる場合、材料1、2、および3を入力すると、飲み物A、B、およびCが返されます。 。私はMySQLを使ってデータベース設計を学び始めたばかりで、どんな助けでも大歓迎です。これが他の場所で答えられた場合は申し訳ありませんが、私は試しましたが、それを検索する方法がよくわかりませんでした。

4

3 に答える 3

3

試す

SELECT d.drink_name
FROM tbl_drink d
INNER JOIN tbl_receipe r ON r.drink_id=d.drink_id
INNER JOIN tbl_ingredient i ON i.ingredient_id = r.ingredient_id
WHERE `given ID` IN (i.ingredient_id)
于 2011-07-07T22:15:56.850 に答える
2
select * from drink d where
  exists (select * from recipe where drink_id = d.drink_id and ingred_id = ?) and
  exists (select * from recipe where drink_id = d.drink_id and ingred_id = ?) and
  [...]

をバインドし、セット内の各材料に?を追加します。exists

于 2011-07-07T22:10:57.940 に答える
-1
SELECT d.drinks_name
FROM drinks d
JOIN recipes AS r ON (r.drinks_id = d.drinks_id)
JOIN ingredients AS i1 ON (i1.ingredients_id = r.ingredients_id)
JOIN ingredients AS i2 ON (i2.ingredients_id = r.ingredients_id)
...
JOIN ingredients AS iN ON (iN.ingredients_id = r.ingredients_id)
WHERE
    i1.ingredients_name = ${first_ingredient}
    i2.ingredients_name = ${second_ingredient}
    ...
    iN.ingredients_name = ${Nth_ingredient}
于 2011-07-07T22:12:52.013 に答える