php - 对多列求和,但在 mysql 查询中有一个列

标签 php mysql sum rows

好的,我有一个产品表。表名是“订单”。以下是相关专栏:

orders table: ID, Style, Color, XXS, XS, SM, MD, LG, Other

我将提供一个逗号分隔的数字列表,这些数字对应于 ID 列(它是主键)中的值。

这是挑战。 XXS、XS、SM、MD、LG 列包含数字。其他列包含文本。每当我们输入订单时,他们都会在这些列中输入数字,然后在最后一列中输入其他内容的文本描述。以下是一些示例行:

Style: 2000, Color: RED. XS: 5, MD: 5, Other: Youth 5-L
Style: 2000, Color: RED, XS: 3, L: 15
Style: 2000, Color: RED, Other: Youth 15 XS
Style: 2000, Color: RED, MD: 10, L:10
Style: 2000, Color: BLACK, MD: 15, Other: Youth - 10-L
Style: 2000, Color: BLACK, MD: 20, LG: 25

我需要的是一个查询,它按样式、然后是颜色对它们进行分组,并对 XXS、XS、SM、MD 和 LG 的每一列(分别)求和,但从另一列中吐出文本。我还需要此列表按样式排序,然后按颜色排序。最后,它需要是存在于以逗号分隔的值列表中的行列表。这是上表中的所需输出:

Style: 2000, Color: BLACK. MD: 35, LG: 25
Style: 2000, Color: BLACK. Other: Youth - 10-L
Style: 2000, Color: RED. XS: 8, MD: 15, L: 25
Style: 2000, Color: RED. Other: Youth 5-L
Style: 2000, Color: RED. Other: Youth 15 XS

我希望这是有道理的!我们需要将行分开,因为它们是由客户输入的,我们需要准确保留谁订购了什么。

如果其他列可以连接成由特殊的唯一字符序列分隔的字符串,如果它具有相同的样式和颜色(使用 |-| 作为分隔符),则可获得加分。示例如下:

Style: 2000, Color: BLACK. MD: 35, LG: 25, Other: Youth - 10-L<br>
Style: 2000, Color: RED. XS: 8, MD: 15, L: 25, Youth 5-L|-|Youth 15-XS

编辑!!!!

我想我很快就联系上了,并自己解决了。如果有人好奇,这里是有问题的查询。超过几个小时我自己无法回答这个问题。

SELECT SUM(XXS) as XXS, SUM(XS) as XS, SUM(SM) as SM, SUM(MD) as MD, SUM(LG) as LG GROUP_CONCAT(Other SEPARATOR '|-|') as Other, Style, Color
FROM orders
WHERE ID IN(List...)
GROUP BY Style, Color
ORDER BY Style, Color;

此查询根据 Style 和 Color 中的相似值将所有行组合在一起,对其中包含数字的列求和,并将所有列与文本连接在一起,形成我的程序可解析的格式。

最佳答案

只是为了让你接受答案,这里是:

SELECT SUM(XXS) as XXS, SUM(XS) as XS, SUM(SM) as SM, SUM(MD) as MD, SUM(LG) as LG GROUP_CONCAT(Other SEPARATOR '|-|') as Other, Style, Color
FROM orders
WHERE ID IN(List...)
GROUP BY Style, Color
ORDER BY Style, Color;

关于php - 对多列求和,但在 mysql 查询中有一个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16988663/

相关文章:

MySQL:当我已经有时间戳字段时,我应该使用 "date"和 "time"字段吗?

java - Android中使用java连接mysql数据库

mysql - 跨连接表求和

r - 将行添加到计算所有数字列总和的数据框

mysql - 使用SUM统计三个表的相关记录

php - 如何一次插入多个技能?

php - 数据被提交到一个表而不是另一个(PHP)

php - Symfony2 安全,使用 sha512,不工作。收到错误的凭据消息

php - 计算数量而不是行数 - MySQL/PHP

mysql - SELECT/GROUP BY - 时间段(10 秒、30 秒等)