MySQL: Pivot Table
11 December 2006 oleh paydjoMasalah sudah terselesaikan, tetapi muncul masalah baru, apakah jika tabel pivot_category kita tambahkan data baru kita harus mengedit query ?
Jawabnya: YUP.
Cuma kita tidak harus mengedit langsung, tetapi bisa memanfaatkan Query jg ![]()
Pertama kita coba buat concatenate category
SELECT
CONCAT('SUM(IF(C.id = ', B.id,', 1, 0)) AS ', B.nama) AS PIVOT
FROM pivot_category B
hasilnya adalah:
SUM(IF(C.id = 1, 1, 0)) AS delphi
SUM(IF(C.id = 2, 1, 0)) AS vb
SUM(IF(C.id = 3, 1, 0)) AS php
SUM(IF(C.id = 4, 1, 0)) AS asp
SUM(IF(C.id = 5, 1, 0)) AS java
sama kan ama query pivotnya, tinggal menyatukan aja. Menyatukannya bisa melalui bahasa pemrograman, atau kalo pake MySQL 4.1.x ke atas, bisa coba GROUP_CONCAT
SELECT
GROUP_CONCAT(CONCAT('SUM(IF(C.id = ', B.id,', 1, 0)) AS ', B.nama) SEPARATOR ', ') AS PIVOT
FROM pivot_category B
hasilnya sangat tidak manusiawi ![]()
SUM(IF(C.id = 1, 1, 0)) AS delphi, SUM(IF(C.id = 2, 1, 0)) AS vb, SUM(IF(C.id = 3, 1, 0)) AS php, SUM(IF(C.id = 4, 1, 0)) AS asp, SUM(IF(C.id = 5, 1, 0)) AS java
hasil salah satu query di atas dimasukkan pada query:
SELECT
A.nama,
# masukkan hasil query sebelumnya disini
FROM pivot_user A
LEFT JOIN pivot_user_category C ON A.id = C.user_id
LEFT JOIN pivot_category B ON B.id = C.cat_id
GROUP BY A.id
Itu aja dulu ![]()
note: istilah pivot table atau crosstab table adalah cara untuk mengubah tampilan data dari kolom menjadi baris dan sebaliknya.
Popularity: 14% [?]
Artikel terkait:

