簡體   English   中英

如何在 MySQL 中將 GROUP CONCAT 與 COUNT 組合?

[英]How to Combine GROUP CONCAT with COUNT in MySQL?

我正在嘗試編寫一個可以從多個表中獲取結果的查詢:

項目類別

ic_id ic_name
1 個人電腦
2 筆記本電腦
3 打印機
4 掃描器

項目

i_id i_category 我的名字
1 1 戴爾 Optiplex
2 2 惠普 Probook 450
3 2 惠普 Probook650
4 3 惠普激光 402dn
5 1 戴爾 MT3030

物品銷售

is_id is_date is_customer
1 15-03-2021 約翰
2 16-03-2022 吉米
3 2023 年 3 月 18 日 標記

商品銷售詳情

isd_id isd_sale_id isd_item
1 1 2
2 1 3
3 2 4
4 3 1
5 3 5
6 3 4

是否可以在 1 個查詢中獲得 GROUP CONCAT 和 COUNT 的組合結果? 請指導我編寫查詢以獲得所需的結果,我想要如下所示的查詢結果,謝謝:

期望的結果

is_id is_date is_customer 項目
1 15-03-2021 約翰 筆記本電腦:3
2 16-03-2022 吉米 打印機:1
3 2023 年 3 月 18 日 標記 電腦:2,打印機:1

如果我理解正確,這只是join但有兩個聚合級別:

select its.*, ic.categories
from item_sale its join
     (select isd.isd_sale_id,
             group_concat(ic_name, ':', cnt order by cnt desc) as categories
      from (select isd.isd_sale_id, ic.ic_name, count(*) as cnt
            from item_sale_detail isd join
                 items i
                 on isd.isd_item = i.i_id join
                 item_category ic
                 on i.i_category = ic.ic_id
            group by isd.isd_sale_id, ic.ic_name
           ) ic
      group by isd.isd_sale_id
     ) ic
     on i.is_id = ic.isd_sale_id;
 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM