php - 选择、合并和输出购物 list 的 'select where in array' 查询的 mysql 结果

标签 php mysql

我一直在尝试根据食谱建立购物 list 。

我有 2 个表:

recipe: id, recipename

recipeingredient:recipeid, ingredientname, ingredientamount, ingredientmeasure

所以我正在向 mysql 发送一个 recipie id 列表,我将在其中获取所有 recipeingingredients。

这很简单:

 $sql = "SELECT *  FROM recipeingredient where recipeid in $vars2";
foreach loop etc

但是,我无法满足此列表的一些要求。

  1. 当 id 重复时,where in 将忽略它。我需要它来查询。
  2. 如果配方成分是:“butter 200 mg | ingredientname ingredientamount, ingredientmeasure” 并且您的结果中有 2 个,我需要它来合并数量。但是,它必须区分成分测量!

示例:

  1. 黄油200克
  2. 黄油2条

输出:黄油 200 克,黄油 2 条。

例子2:

  1. 黄油200克
  2. 黄油2克

产出:黄油202克

几乎是一个基于食谱列表的动态、完整的杂货 list 。

我在查询中尝试了很多不同的方法,但我不知所措。 执行此操作的最佳方法是在单独查询每个食谱后解析输出吗?

作为 php 数组的新手,我不知道该怎么做...... 我可以用 javascript 做到这一点,但一段时间后,暴力破解总是让我头疼。 这是一个 sqlfiddle它的

非常感谢任何指点或帮助! =)

最佳答案

所以,您基本上是在寻找类似的东西,对吧?

SELECT ingredientname
     , SUM(ingredientamount) total
     , ingredientmeasure 
  FROM recipeingredient 
 WHERE recipeid IN (7,8) 
 GROUP
    BY ingredientname
     , ingredientmeasure;

http://sqlfiddle.com/#!2/77420/7

你可以走得更远。例如,培根的“刨丝”重约。 25 克,所以您可以将其计入计算 - 不过有点困难!

...并查看我上面的评论。

要选择多个相同的食谱,您可能需要做这样的事情...

SELECT recipeid
     , ingredientname
     , ingredientamount
     , ingredientmeasure 
  FROM recipeingredient 
 WHERE recipeid IN (7,8); 

...然后在应用程序级别处理其余逻辑(例如,使用一些 php 和/或 javascript)

关于php - 选择、合并和输出购物 list 的 'select where in array' 查询的 mysql 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21184241/

相关文章:

php - 如何从数据库创建 4 维数组

PHP文件显示空白页

尽管已声明,但未找到 MySQL 列?

mysql - 仅在 PHP 中显示本周的行

java - 通过 SSH 连接位于防火墙后面的远程数据库

mysql - 如何比较/更新两个 MySQL 数据库的架构

PHP - 创建随机哈希字符串以进行电子邮件闭环验证

php - 检查是否存在定义变量-PHP中的警告错误

php - 在爆炸函数php中检测重复字符串

php - 将一个表中的多个 URL 链接到另一个表中的单个记录?