2つのテーブルがあります。 1は「レシピ」と呼ばれ、1つは「成分」と呼ばれます。レシピテーブルには、id、recipe_name、calories、bld(朝食、昼食、夕食のB、L、Dの列挙リスト)、prep(準備時間)、skill(別の列挙リスト) int、およびadv)。SQLクエリーから予期しない結果を得る
私は以下を持っています:recipe_id(recipes_id(recipesテーブルのidカラムに対する外部キー制約付き)、およびingredient_name、および他のいくつかのカラム。
私はレシピテーブルのカラムと原料テーブルのingredients_name欄をいくつかの条件で選択しようとしています - 原料テーブルに成分が含まれていなくても、すべてのレシピを返信したい実際にはこれは私がとにかく学ぶためのものです)、その成分の1つにユーザーが入力するキーワードの一部が含まれている場合はレシピを除外したい(次の例ではキーワードとして「olive」を使用しています)。ここで
は、これまでのところ、私のSQLです:
SELECT recipes.*, ingredients.ingredient_name
FROM recipes
LEFT OUTER JOIN ingredients
ON ingredients.recipe_id=recipes.id
WHERE ingredients.ingredient_name <> '%olive%'
ORDER BY RAND() LIMIT 7
これが唯一の食材を使ったレシピを返し、「オリーブ」は、食材の名前の一つの一部であり、レシピなど、まだです。データのセットで考えるのは、このタイプのロジックで作業する場合それは、最善の任意のヘルプ
:SET1セットとセットSET2を制限私たちがやりたいことは、前のステップで設定することによって、このセットを制限です。あなたがしているのは、 '%olive%'を含む成分からレコードをすべて削除することだけです。その成分線を持つレシピだけに限定するのではありません。さて、「レシピ*」は悪い習慣です。もう少しタイピングしなくてはなりませんが、あなたが望む完全な列リストはより良い規則です。 –
ありがとうございます – HauntedSmores