Kemarin di grup FB PHP Indonesia, ada yang bertanya tentang masalah query di MySQL. Dari data di tabel1, dia ingin menghasilkan data seperti tabel2, seperti gambar dibawah ini.

Query untuk menghasilkan data diatas sebetulnya cukup mudah yaitu seperti berikut :


SELECT
@cat_id:=category_id,
category_id,
count(category_id) as count_cat,
(SELECT count(category_id) FROM table1 WHERE status = 'Y' AND category_id = @cat_id) as count_y,
(SELECT count(category_id) FROM table1 WHERE status = 'N' AND category_id = @cat_id) as count_y
FROM table1
group by category_id

Perhatikan bahwa pada query diatas, ada sesuatu yang agak berbeda, yaitu kita menggunakan simbol @, yaitu sebuah variabel, dalam hal ini variabel @cat_id. Nilai dari kolom category_id dimasukan ke variabel @cat_id, kemudian nilai variabel @cat_id nanti dipakai di tempat lain, dalam hal ini di subquery, bagian


SELECT count(category_id) FROM table1 WHERE status = 'Y' AND category_id = @cat_id) as count_y.

Jadi, penggunaan variabel pun tidak hanya untuk bahasa pemrograman saja, namun di MySQL pun juga terdapat variabel untuk menyimpan data. Referensi lebih lanjut tentang penggunaan variabel di MySQL bisa dilihat disini.
Oke,sekian dulu tulisan dari saya. Semoga bermanfaat dan berguna. Selamat coding!