使用GROUP_CONCAT和COUNT对数据进行排序

时间:2015-03-10 10:08:22

标签: mysql count group-concat

我有表produktransaksi_detail

然后,我有两个问题。

首先查询:

SELECT produk.idproduk, produk.nmproduk, COUNT(*) AS total
FROM produk, transaksi_detail
WHERE produk.idproduk=transaksi_detail.idproduk
GROUP BY produk.nmproduk

结果:

idproduk   |   nmproduk    |    total_order
-------------------------------------------
I3               coffe           6
I4               pencil          2
I1               bread           6
I2               snack           7
I5               tea             2

第二次查询:

SELECT GROUP_CONCAT(produk.idproduk) AS idproduk, transaksi_detail.idtransaksi
FROM produk, transaksi_detail
WHERE produk.idproduk=transaksi_detail.idproduk
GROUP BY transaksi_detail.idtransaksi

结果:

idproduk   |   idtransaction
----------------------------
I2, I1, I5          1
I2, I4              2
I2, I3              3
I2, I1, I4          4
I1, I3              5
I2, I3              7
I1, I3              8

如何在第一个查询中根据total_order按第二个结果生成结果,但是“idproduk-> GROUP_CONCAT”顺序。 像这样:

 idproduk   |   idtransaction
----------------------------
I1, I2, I5          1
I4, I2              2
I3, I2              3
I4, I2, I1          4
I3, I1              5
I2, I3              7
I1, I3              8

“idproduk”第一个来自“I2”,因为total_order比其他'desc'大。

1 个答案:

答案 0 :(得分:0)

你可以尝试

SELECT GROUP_CONCAT(order_count.idproduk ORDER BY order_count.total DESC) AS idproduk, 
       transaksi_detail.idtransaksi 
FROM   (SELECT produk.idproduk, 
               COUNT(*) AS total 
        FROM   produk, 
               transaksi_detail 
        WHERE  produk.idproduk = transaksi_detail.idproduk 
        GROUP  BY produk.nmproduk) order_count 
       INNER JOIN transaksi_detail 
               ON order_count.idproduk = transaksi_detail.idproduk 
GROUP BY transaksi_detail.idtransaksi