我有一个数据库配方表,如下所示:
(irrelevant fields skipped)
ingredients VARCHAR(500)
ingNo INT
示例成分字段的格式为:
'pepper :1 \n tomato :2 \n salt :half a spoon'
'egg :1 \n tomato :1 \n potato :5'
'rice :100 gram \n oil :1 spoon'
现在,我想形成一个select语句,根据给定的成分选择元组,例如,如果我选择'番茄'和'土豆',它应该返回含有大部分成分的食谱(所以从上面的例子中它应该是元组2和1,完全按照那个顺序)。如果有更多具有相同匹配数的元组,则查询应根据匹配数除以ingNo对元组进行排序。如何在SQL中使用它?
答案 0 :(得分:3)
您需要重新设计数据库。使用两个表。一个是配方。第二个参考配方并包含成分和测量。
recipe
- irrelevant fields
ingredient
- recipeID
- name
- measurement
答案 1 :(得分:1)
您可以使用UNION查询:
select recipe from sometable where ingredients LIKE '%tomato%'
UNION
select recipe from sometable where ingredients LIKE '%potato%';
然后有一些全文选项对您的数据库引擎是唯一的,您也可以查看。