[英]group_concat concat sum if dates are equal
我有这个带有concat的group_concat,它工作正常,除了我需要找到一种方法来获得相同的结果,但是sum(pest_count)的地方scout_date相同。 $ scout_date来自一个下拉列表,该下拉列表在同一表中查找日期,因此其格式为2014-03-13。 感谢您的光临。
"SELECT group_concat(concat('<div class=\"',pest_name,'\">',pest_count,' ',pest_name,'</div>') SEPARATOR ' ') pests,
card_id,
card_type,
top_y,
left_x,
scout_date FROM scout_logpestnum WHERE custnum='$custnum' AND locationname='$locationname' AND scoutlogname = '$scoutlogname' AND date(scout_date) ='$scout_date'
GROUP BY
card_id,
card_type,
top_y,
left_x,
scout_date"
这是我的对象,呼应结果
<?php echo $obj['pests']; ?>
这是我的表数据
pest_name pest_count card_id card_type top_y left_x scout_date
Aphids 2 1 yellcard 652 703 2014-3-13 15:59:54
Thrips 4 1 yellcard 652 703 2014-3-13 15:59:54
Thrips 2 2 bluecard 754 707 2014-3-13 15:59:54
Thrips 1 3 yellcard 531 616 2014-3-13 15:59:54
Thrips 1 5 yellcard 80 613 2014-3-13 15:59:54
Aphids 1 1 yellcard 652 703 2014-3-13 16:00:04
Thrips 2 1 yellcard 652 703 2014-3-13 16:00:04
查询现在将返回card_id 1的内容
2 Aphids
4 Thrips
1 Aphids
2 Thrips
这是理想的结果
这是我最后想要的每张卡上的每个pest_name和pest_count的内容。 这将是2014-3-13日期的card_id 1
3 Aphids
6 Thrips
这是我现在的最终版本,感谢John急需的帮助。
SELECT card_id,left_x,top_y,card_type,
GROUP_CONCAT(CONCAT('<div class=\"',pest_name,'\">',pest_count,' ',pest_name,'</div>') SEPARATOR ' ') pests FROM(
SELECT card_id,left_x,top_y,card_type, pest_name AS pest_name, sum(pest_count) AS pest_count, scout_date
FROM scout_logpestnumtest
GROUP BY pest_name,card_id, date(scout_date)
) as t
GROUP by card_id
我相信您想要做的是按datetime字段的DATE分组,而不是包括时间戳..当您执行DATE(scout_date)
,它将忽略时间戳,而仅将日期分组..因为那是唯一的字段不同的将导致分组显示4个结果而不是2个结果,这似乎就是问题所在。
SELECT
group_concat(
concat('<div class=\"',pest_name,'\">',pest_count,' ',pest_name,'</div>') SEPARATOR ' '
) pests,
card_id,
card_type,
top_y,
left_x,
scout_date
FROM scout_logpestnum
WHERE custnum='$custnum'
AND locationname='$locationname'
AND scoutlogname = '$scoutlogname'
AND date(scout_date) ='$scout_date'
GROUP BY card_id, DATE(scout_date)
编辑 :我的建议是首先对数据求和,然后再进行连接。 例如参见FIDDLE
SELECT
card_id,
group_concat(
concat('<div class=\"',pest_name,'\">',pest_count,' ',pest_name,'</div>') SEPARATOR ' '
) pests
FROM(
SELECT
pest_name AS pest_name,
sum(pest_count) AS pest_count,
card_id,
card_type,
top_y,
left_x,
scout_date
FROM scout_logpestnum
WHERE custnum='$custnum'
AND locationname='$locationname'
AND scoutlogname = '$scoutlogname'
AND date(scout_date) ='$scout_date'
GROUP BY card_id, card_type, top_y, left_x, date(scout_date)
) as t
GROUP BY card_id
编辑:此字段按卡ID显示数据。因此,我的编辑应适用于以上查询。.我删除了concat组,以便您可以更好地阅读...按卡以及名称和日期进行分组这样,您将获得正确数量的div
返回。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.