繁体   English   中英

总和多列,但在MySQL查询一

[英]Sum multiple columns but one in mysql query

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

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;

该查询根据“样式”和“颜色”中的相似值将所有行分组在一起,对其中具有数字的列进行求和,然后将所有具有文本的列合并为我的程序可解析的格式。

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

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;
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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM