[英]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.