我正在尝试制作一个 mysql 视图,然后用于 Sphinx 搜索。
我有三张表:食谱、标签、配料。
*粗体字是行名
食谱是我存储食谱名称和烹饪时间(持续时间总计)的地方
配料是我存储特定食谱所需的 1 种配料的地方(这意味着每个食谱对应的配料不止一种。)配料有一个对应于食谱的recipe_id和我存储配料名称的配料字段。
标签类似于成分,因为对于每个食谱,可以有多个标签。例如:妈妈的鸡肉食谱有标签(逗号分隔):yummy,chicken,thanksgiving标签也有一个recipe_id字段和一个标签字段,我存储标签的名称。
现在,我正在实现 Sphinx 搜索,需要一种方法来组合
- 配方 ID ( recipes.id )
- 配方名称(recipes.name)
- 成分 ID ( ingredients.id )
- 成分名称(成分.ingredient)
- 配料对应的配方 ID ( ingredients.recipe_id )
- 标签 ID ( tags.id )
- 标签名称 ( tags.tag )
- 标签对应的配方 ID ( tags.recipe_id )
我的思考过程(我是一个漂亮的程序员,刚刚发现了 Sphinx)是创建一个 MYSQL 视图,它结合了上述所有行,所以我有一个看起来像这样的视图:
- 食谱名称:To' Good Chicken Soup......标签:美味......成分:鸡肉
- 食谱名称:To' Good Chicken Soup......标签:美味......成分:鸡肉
- 食谱名称:To' Good Chicken Soup......标签:Soup......成分:Chicken
- 食谱名称:To' Good Chicken Soup......标签:美味......成分:水
如您所见,这种方法的问题在于它重复了很多行。但由于这只是我能想到的方法,所以我继续创建了一个新视图:
SELECT
recipes.id,
recipes.name,
ingredients.ingredient,
tags.tag
FROM
recipes, ingredients, tags
WHERE
recipes.id=ingredients.recipe_id
AND recipes.id=tags.recipe_id;
我将这段代码放入 mysql 中,但我只得到具有对应标签/成分的食谱?另外,这是构建我的 mysql 视图的正确方法吗?
感谢您的任何帮助!