私は2つのテーブルを持っています-料理と材料:
中皿、私はそのようなとして注文ピザ料理のリストを、持っています:
で食材、私はそのようなよう命じたすべての料理のためのすべての異なる成分のリストを、持っています:
各料理の名前と一緒に、各料理のすべての材料のすべての名前をリストできるようにしたいと思います。
成分IDを本来の名前に置き換えず、代わりに空のセットを返すことを選択するこのクエリを作成しました-私が間違っていることを説明してください:
SELECT dishes.name, ingredients.name, ingredients.id
FROM dishes
INNER JOIN ingredients
ON dishes.ingredient_1=ingredients.id,dishes.ingredient_2=ingredients.id,dishes.ingredient_3=ingredients.id,dishes.ingredient_4=ingredients.id,dishes.ingredient_5=ingredients.id,dishes.ingredient_6=ingredients.id, dishes.ingredient_7=ingredients.id,dishes.ingredient_8=ingredients.id;
あなたが参照することができればそれは素晴らしいでしょう:
Disregard The Text In Hebrew - Treat It As Your Own Language.
1. The logic of the DB structuring - am I doing it correctly?
Pizza
PizzaIngredients
Ingredients
Pizza
would have ID
, name
, and type
where ID
is the primary key.
PizzaIngredients
なければならないPizzaId
とIngredientId
(これは、主キーは複合キーである多く、多くのテーブルであるPizzaId
とIngredientID
)
Ingredients
持っているID
とname
どこID
主キーです。
2.各料理の名前と一緒に、各料理のすべての材料のすべての名前をリストします。MySQL
(未テスト)のこのようなもの:
SELECT p.ID, p.name, GROUP_CONCAT(i.name) AS ingredients
FROM pizza p
INNER JOIN pizzaingredients pi ON p.ID = pi.PizzaID
INNER JOIN ingredients i ON pi.IngredientID = i.ID
GROUP BY p.id
3.以前にこのような問題(単一対多の関係が必要な問題)に遭遇した場合、PHPとMySQLを使用して、これとは異なる方法でどのように解決しましたか?
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加