Contoh kasus, saya memiliki tabel yang berisi barang dan pembeli. Saya mau menampilkan data dari tabel tersebut dalam bentuk “Customer|Barang Belanjaan|Total Belanja” di kelompokkan per customer/pembeli. Semua jenis barang yang sama hanya ditampilkan 1 kali.

Solusi :

contab saya memiliki cart sebagai berikut

idcustomerbarang
1AndiPepsodent
2TommyMouse Pad
3DinaPepsodent
4AndiMouse Pad
5AndiLaptop
6TommyPrinter
7KacikuangLaptop
8KacibangPrinter
9TommyPrinter

Untuk memilih data dikelompokkan berdasarkan customer dan dihitung jumlah totalnya, gunakan group by.

SELECT
   customer,
   barang,
   COUNT(*) AS 'Total Belanja' 
FROM
   `cart` 
GROUP  BY
   customer
customerBarangTotal Belanja
AndiPepsodent3
DinaPepsodent1
KacibangPrinter1
KacikuangLaptop1
TommyMouse Pad3

masalahnya disini adalah Barang yang ditampilkan hanya 1 sementara ada beberapa customer yang beberapa kali membeli barang, tetapi barang yang ditampilkan hanya 1. solusinya gunakan group_concat

SELECT
   customer,
   GROUP_CONCAT(barang) AS "Barang Belanjaan",
   COUNT(*) AS 'Total Belanja'   
FROM
   `cart`   
GROUP  BY
   customer

hasilnya

customerBarang BelanjaanTotal Belanja
AndiPepsodent,Mouse Pad,Laptop3
DinaPepsodent1
KacibangPrinter1
KacikuangLaptop1
TommyMouse Pad,Printer,Printer3

pada tabel diatas masih terdapat barang yang sama, yaitu Printer untuk menggabungkan barang yang sama gunakan DISTINCT

SELECT
   customer,
   GROUP_CONCAT(DISTINCT(barang)) AS "Barang Belanjaan",
   COUNT(*) AS 'Total Belanja' 
FROM
   `cart` 
GROUP  BY
   customer

sehingga hasilnya menjadi

customerBarang BelanjaanTotal Belanja
AndiPepsodent,Mouse Pad,Laptop3
DinaPepsodent1
KacibangPrinter1
KacikuangLaptop1
TommyMouse Pad,Printer3

Join the Conversation

1 Comment

Your email address will not be published. Required fields are marked *