-->
Cara Menampilkan Data/Baris Sebagai Field/Kolom Di Sql Query
4/ 5 stars - "Cara Menampilkan Data/Baris Sebagai Field/Kolom Di Sql Query" { Jangan Malas Membaca Ya } pernah bingung, b aga imana Query SQL nya cara menampilkan Data/Baris sebagai Field/Kolom . Mungkin te...

Cara Menampilkan Data/Baris Sebagai Field/Kolom Di Sql Query



{ Jangan Malas Membaca Ya }

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 memakai 2 tabel adalah tbl_user dan tbl_user_desc

tabel 1 (tbl_user)
id_user | nama_lengkap | username | password
--------------------------------------------
1       | admin        | admin    | admin
2       |        | 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 agar jadi seperti ini?

id_user | nama_lengkap | username | password | alamat | no_hp        | keterangan
--------------------------------------------------------------------------------------
1       | admin        | admin    | admin    | Jambi  | 081213141516 | -
2       |        | co-paz   | copaz11  | Batam  | 081277855601 | https://co-paz.blogspot.com

SOLUSI:
Setelah mencari dan mulai tanya di lembaga & alhamdulillah dapat juga tanggapan 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   | copaz11  | Batam  | 081277855601 | [NULL]  

Sayangnya pada field terakhir akan selalu bernilai NULL, untuk nanggulangin hal itu dapat menggunakan cara kedua adalah 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 ibarat yang diharapkan, query nya sudah gak menampakkan lagi hasil NULL value, tapi buruk nya jadi ada tanda koma sebagai pemisah, ini kita hapus aja dulu pake REPLACE, ibarat 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 ibarat yang di harapkan ;)

Bagaimana berdasarkan teman-teman tentang Cara Menampilkan data/baris sebagai field/kolom di SQL Query? Cukup mudahkan? Sekian dan terimakasih :D.