2016-04-02 19 views
0

Webページのフィルタ内で使用するSQLクエリを作成しようとしています。ウェブページは、オンラインレシピクッキングブックのためのものです。SQLクエリを作成してフィルタを使用して結果を返す

システムにログインしてレシピに移動した場合、ユーザーはこれらのレシピを見ることができます。

例えば、私は3つのレシピを作り、1つにはブロッコリーがあります。私は、成分フィルターでブロッコリーを選ぶことができます。そして、私はブロッコリーで保存したレシピを見てそれを表示します。だから私はクエリが成分IDとユーザIDである2つの値を取る必要があることを信じているので、どのレシピにその成分が含まれているかを確認し、そのレシピを作成したらレシピIDを返す必要があるそれらのレシピを表示することができます。

これは私の質問です。しかし、それはユーザーが作ったすべてを戻します。

SELECT quantities.recipe_id 
FROM quantities, recipes 
WHERE quantities.ingredient_id = '24' AND recipes.user_id = '6' 

どこかで参加する必要はありますか?レシピのため

表構造: Recipe Table Structure

数量 Quantities Table Structure

+1

'quantity'と' recipes'のテーブル構造を教えてください。 –

+0

あなたが望む正確なクエリを手助けするテーブル構造を教えてください – androidnation

+0

@Tim Biegeleisenそれを示してくれて申し訳ありません。私はポストショーのテーブル構造を編集しました。 –

答えて

1

ためのテーブル構造はい、あなたが参加を必要としています。優れたクエリは次のようになります。

SELECT quantities.recipe_id 
FROM quantities 
INNER JOIN recipes ON quantities.recipe_id = recipes.recipe_id 
WHERE quantities.ingredient_id = 24 AND recipes.user_id = 6 

参加がなければ、あなたが意図しているものではありませんすべての成分の行、とすべてのレシピ行の積を生成しています。

0
SELECT quantities.recipe_id 
FROM quantities, recipes USING(recipe_id) 
WHERE quantities.ingredient_id = '24' AND recipes.user_id = '6' 

フィールドが両方のテーブルで同じ名前になったときに、別の(より短いコード)方法で結合する方法。

関連する問題