我有一个食谱数据库。在这个数据库中我有 5 个表:
- recipes
- ingredients
- ingredients_available
- tags
- tags_available
具有以下结构:
- recipes
id, name
- ingredients
id, recipe_id, ingredient_id
- ingredients_available
id, name
- tags
id, recipe_id, tag_id
- tags_available
id, name
我想用一组成分(其中有id号)查询数据库,例如5、2、3,并找到部分或公正地匹配这些数字的食谱。然后我想根据匹配的原料数量来订购食谱。我还想知道完成食谱还需要哪些其他成分以及相应的成分 ID。我还希望在查询中添加无限数量的标签,因此只查找与标签匹配的成分 ID,并再次按匹配的标签数量进行排序。
我将如何创建这样一个查询,这也可以通过一个查询来完成吗?我正在使用 MySQL 数据库。任何指向正确方向的指针都会很棒。谢谢。
最佳答案
我认为“连接”的力量就在这里。 我不确定您想要产生什么可能的组合,但以下是我对您在此处呈现的结构想到的一些场景:
//获取食谱原料
Select ingredients.* from recipe recipe
Inner Join ingredients ingredients on recipe.id = ingredients.recipe_id
order by ingredients.id
//获取食谱可用的原料
Select ingredients.* from recipe recipe
Inner Join ingredients ingredients on recipe.id = ingredients.recipe_id
Inner Join ingredients_available ingredients_available on ingredients.ingredient_id =
ingredients_available.id
order by ingredients.id
这里有一个mysql的‘join’概念的链接来解决你的问题:
http://dev.mysql.com/doc/refman/5.0/en/join.html
干杯!
关于php - 查询以将表中的行与数字列表进行匹配,按匹配的行数排序,并与标签进行匹配并执行相同的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22468855/