Cara Menampilkan data/baris sebagai field/kolom di SQL Query
3 minute read
{ Jangan Malas Membaca Ya }
Co-Paz pernah bingung, bagaimana Query SQL nya cara menampilkan Data/Baris sebagai Field/Kolom. Mungkin
teman-teman juga pengen tau juga bagaimana caranya. Langsung aja yah…Cekidot!...
Disini Co-Paz menggunakan 2 tabel yaitu tbl_user dan tbl_user_desc
tabel 1 (tbl_user)
id_user | nama_lengkap | username | password
--------------------------------------------
1 | admin
| admin
| admin
2 | Co-Paz
| co-paz |
copaz11
tabel 2 (tbl_user_desc)
id_user_desc | id_user | key | value
------------------------------------------
1
| 1
| alamat | Jambi
2
| 1
| no_hp | 081213141516
3
| 1
| keterangan | -
4 | 2 |
alamat | Batam
5
| 2
| no_hp | 081277855601
6
| 2
| keterangan | https://co-paz.blogspot.com
Nah ayo…, bagaimana caranya biar jadi seperti ini?
id_user | nama_lengkap | username | password | alamat | no_hp
| keterangan
--------------------------------------------------------------------------------------
1 | admin |
admin | admin | Jambi | 081213141516 | -
2 | Co-Paz
| co-paz | copaz11 | Batam | 081277855601 | https://co-paz.blogspot.com
SOLUSI:
Setelah Co-Paz mencari dan
mulai tanya di forum & alhamdulillah dapat juga jawaban yang sangat memuaskan ;)
Salah
satunya menggunakan CASE
SELECT tbl_user.id_user, `nama_lengkap`, `username`, `password`,
CASE WHEN `key` = "alamat" THEN `value` END AS alamat,
CASE WHEN `key` = "no_hp" THEN `value` END AS no_hp,
CASE WHEN `key` = "keterangan" THEN `value` END AS keterangan
FROM tbl_user JOIN tbl_user_desc
ON tbl_user.id_user = tbl_user_desc.id_user
GROUP BY tbl_user_desc.id_user
dari query tersebut, akan dihasilkan :
id_user | nama_lengkap | username | password
| alamat | no_hp |
keterangan
--------------------------------------------------------------------------------------
1 | admin |
admin | admin | Jambi | 081213141516 | [NULL]
2 | Co-Paz | co-paz | copaz11 | Batam | 081277855601 | [NULL]
Sayangnya pada field terakhir akan selalu bernilai NULL, untuk nanggulangin hal itu bisa menggunakan cara kedua yaitu menggunakan function GROUP_CONCAT()
SELECT tbl_user.id_user, `nama_lengkap`, `username`, `password`,
GROUP_CONCAT(CASE WHEN `key` = "alamat" THEN `value` END, ',') AS alamat ,
GROUP_CONCAT(CASE WHEN `key` = "no_hp" THEN `value` END) AS no_hp,
GROUP_CONCAT(CASE WHEN `key` = "keterangan" THEN `value` END, ',') AS keterangan
FROM tbl_user JOIN tbl_user_desc
ON tbl_user.id_user = tbl_user_desc.id_user
GROUP BY tbl_user_desc.id_user
Menggunakan GROUP_CONCAT() ini lumayan, sudah seperti yang diharapkan, query nya sudah gak menampakkan lagi hasil NULL value, tapi jelek nya jadi ada tanda koma sebagai pemisah, ini kita hapus aja dulu pake REPLACE, seperti ini:
SELECT tbl_user.id_user, `nama_lengkap`, `username`, `password`,
REPLACE(GROUP_CONCAT(CASE WHEN `key` = "alamat" THEN `value` END, ',') , ',', '') AS alamat ,
REPLACE(GROUP_CONCAT(CASE WHEN `key` = "no_hp" THEN `value` END) , ',', '') AS no_hp,
REPLACE(GROUP_CONCAT(CASE WHEN `key` = "keterangan" THEN `value` END, ',') , ',', '') AS keterangan
FROM tbl_user JOIN tbl_user_desc
ON tbl_user.id_user = tbl_user_desc.id_user
GROUP BY tbl_user_desc.id_user
Hasilnya sudah seperti yang di harapkan ;)
Bagaimana menurut teman-teman tentang Cara Menampilkan data/baris sebagai field/kolom di SQL Query? Cukup mudahkan? Sekian dan terimakasih :D.
Posting Komentar