我一直在尝试根据食谱建立购物 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
但是,我无法满足此列表的一些要求。
- 当 id 重复时,where in 将忽略它。我需要它来查询。
- 如果配方成分是:
“butter 200 mg | ingredientname ingredientamount, ingredientmeasure”
并且您的结果中有 2 个,我需要它来合并数量。但是,它必须区分成分测量!
示例:
- 黄油200克
- 黄油2条
输出:黄油 200 克,黄油 2 条。
例子2:
- 黄油200克
- 黄油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/