php - 查询以将表中的行与数字列表进行匹配,按匹配的行数排序,并与标签进行匹配并执行相同的操作?

标签 php mysql sql

我有一个食谱数据库。在这个数据库中我有 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/

相关文章:

php - 与php算术相关

php - 如何在 IN 中正确使用 CASE WHEN/THEN/ELSE?

php - 带有 PHP 按钮的两个 Shell_Exec 命令,但仍在一个 powershell 中?

sql - 仅获取最新行,按列分组

Java Hibernate 注解(@JoinTable、@Filter)

php - 使用 twig 和 Slim 框架(版本 2)上传文件 - PHP

MySQL第一行column3和第二行column2之间的日期差异

mysql - 在 SQL 中将行转换为列

php - 建立数据库连接时出错

mysql - Left Join 查询返回重复项