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
id | customer | barang |
---|---|---|
1 | Andi | Pepsodent |
2 | Tommy | Mouse Pad |
3 | Dina | Pepsodent |
4 | Andi | Mouse Pad |
5 | Andi | Laptop |
6 | Tommy | Printer |
7 | Kacikuang | Laptop |
8 | Kacibang | Printer |
9 | Tommy | Printer |
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
customer | Barang | Total Belanja |
---|---|---|
Andi | Pepsodent | 3 |
Dina | Pepsodent | 1 |
Kacibang | Printer | 1 |
Kacikuang | Laptop | 1 |
Tommy | Mouse Pad | 3 |
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
customer | Barang Belanjaan | Total Belanja |
---|---|---|
Andi | Pepsodent,Mouse Pad,Laptop | 3 |
Dina | Pepsodent | 1 |
Kacibang | Printer | 1 |
Kacikuang | Laptop | 1 |
Tommy | Mouse Pad,Printer,Printer | 3 |
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
customer | Barang Belanjaan | Total Belanja |
---|---|---|
Andi | Pepsodent,Mouse Pad,Laptop | 3 |
Dina | Pepsodent | 1 |
Kacibang | Printer | 1 |
Kacikuang | Laptop | 1 |
Tommy | Mouse Pad,Printer | 3 |
Kalo supaya enter gmna mas jdi gk pake koma