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