23 March 2015

MySQL: Group_Concat


Kalau menggabungkan beberapa kolom sebaris dalam sebuah tabel MySQL kita bisa menggunakan sintaks concat, lalu bagaimana menggabungkan beberapa row dengan kolom yang sama ke dalam satu baris?

Jawabanya adalah dengan menggunakan Group_Concat.
Sintaks:
GROUP_CONCAT(DISTINCT expression
ORDER BY {column_name | usinged_integer | expression}
SEPARATOR sep);


Keterangan:

  • Distinct digunakan untuk menampilkan hanya data yang berbeda, menghilangkan duplikasi data.
  • Seperti query pada umumnya Order By digunakan untuk sorting data, jika pada query biasa urutan secara vertikal, pada group concat urutan ditampilkan secara horizontal.
  • Separator merupakan karakter pemisah antara nilai yang digabungkan, jika tidak menuliskannya maka nilai default adalah koma (,).
Untuk lebih jelasnya mari kita simak beberapa contoh query yang akan menggunakan tabel produk berikut:
Contoh 1: Penggabungan Sederhana
SELECT GROUP_CONCAT(nmproduk) AS nama FROM produk
Contoh 2: Penggabungan dengan Group Kategori
SELECT kategori, GROUP_CONCAT( nmproduk ) AS nama
FROM produk GROUP BY kategori

Contoh 3: Order By Alphabet nama
SELECT kategori, 
GROUP_CONCAT( nmproduk ORDER BY nmproduk ) AS nama
FROM produk GROUP BY kategori

Contoh 4: Order By Harga termahal
SELECT kategori, GROUP_CONCAT( nmproduk
ORDER BY harga DESC ) AS nama
FROM produk
GROUP BY kategori

Contoh 5: Separator diganti jadi titik koma (;)
SELECT kategori,
GROUP_CONCAT( nmproduk ORDER BY harga SEPARATOR ';') AS nama
FROM produk GROUP BY kategori


Untuk contoh distinct kita akan menggunakan table transaksi_detail sebagai berikut:
Contoh 6: Distinct Produk per idtransaksi
SELECT idtransaksi,
GROUP_CONCAT(DISTINCT idproduk ORDER BY idproduk) AS idproduk
FROM transaksi_detail GROUP BY idtransaksi



Click here if you like this article.


0 comments: