【发布时间】:2016-04-19 00:31:17
【问题描述】:
所以我有 2 张桌子。一种称为“食谱”,一种称为“成分”。在食谱表中,我有:id、recipe_name、卡路里、bld(一个枚举列表,可以是早餐、午餐和晚餐的 B、L 或 D)、prep(准备时间)和 Skill(另一个枚举列表 beg, int 和 adv)。
在成分表中,我有:recipe_id(对食谱表中的 id 列有外键约束)、成分名称和其他一些列。
我试图在某些条件下从食谱表中选择所有列,并从成分表中选择成分名称列 - 我想返回所有食谱,即使它们在成分表中没有成分(这不会真的发生在练习,但无论如何这是我要学习的),如果其中一种成分包含用户输入的关键字的一部分,我想排除食谱(在下一个示例中将使用“橄榄”作为关键字)。
到目前为止,这是我的 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
这仅返回带有成分的食谱,并且仍然包括其中“橄榄”是成分名称之一的食谱。
感谢您的帮助
【问题讨论】:
-
您没有正确回答您的问题。您所做的只是从其中包含“%olive%”的成分中删除所有记录。你不〜仅限于具有该成分线的食谱。顺便说一句,“食谱。*”是不好的做法。即使您必须输入更多内容,但您希望的完整列列表是一个更好的约定。
标签: mysql