我一直试图建立一个基于收件人的购物清单。
我有两张桌子:
食谱:id,recipename
recipeingredient:recipeid,ingredientname,ingredientamount,ingredientmeasure
所以我将一个收件人ID列表发送到mysql,我将抓住所有的配方。
这很简单:
$sql = "SELECT * FROM recipeingredient where recipeid in $vars2";
foreach loop etc
然而,这个列表有一些我无法做到的要求。
"butter 200 mg | ingredientname ingredientamount, ingredientmeasure"
并且你的结果中有2个,我需要它来合并金额。但是,它必须区分成分测量! 示例:
输出:黄油200克,黄油2支。
示例2:
输出:黄油202克
几乎是一个基于收件人列表的动态,完整的杂货商。
我在查询中尝试了很多不同的东西,但我不知所措。 在单独查询每个配方后,这是解析输出的最佳方法吗?
成为php数组的新手,我不知道如何真正做到这一点.. 我可以在javascript中做到这一点,但在一段时间后,它强制它总是咬我的屁股。 这是sqlfiddle的
非常感谢任何指针或帮助! =)
答案 0 :(得分:1)
所以,你基本上都是这样的,对吗?
SELECT ingredientname
, SUM(ingredientamount) total
, ingredientmeasure
FROM recipeingredient
WHERE recipeid IN (7,8)
GROUP
BY ingredientname
, ingredientmeasure;
http://sqlfiddle.com/#!2/77420/7
你可以走得更远。例如,一个“rasher”的培根重约。 25g,所以你可以把它考虑在计算中 - 虽然是一个任务!
...并在上面看到我的评论。
要选择相同食谱的倍数,您可能需要做类似的事情......
SELECT recipeid
, ingredientname
, ingredientamount
, ingredientmeasure
FROM recipeingredient
WHERE recipeid IN (7,8);
...然后在应用程序级别处理其余的逻辑(例如,使用一些php和/或javascript)