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