MAW MUMET!

LEFT JOIN COUNT Null Result

9 Desember 2015

Seharian aku merasa seperti programmer goblok. Ngutak-atik query tapi nggak ketemu hasil yang diharapkan. Yah, mungkin ini balasan dari orang yang sombong merasa sudah mahir ng-query pakai Common Table Expression (CTE).

Jadi, gini lho cerita singkat dari query yang bikin gemas ini.

Kita punya dua tabel yang sederhana seperti di bawah ini:

CREATE TABLE tabel_spesies(  xx_idspesies character varying(4) NOT NULL,  xx_namaspesies character varying(8) NOT NULL);CREATE TABLE tabel_warna(  hh_idspesies character varying(4) NOT NULL,  hh_namawarna character varying(8) NOT NULL);

 Kalau diisi data kira-kira hasilnya begini:

xx_idspesiesxx_namaspesies
A01Anggrek
A02Mawar
hh_idspesieshh_namawarna
A01PUTIH
A02MERAH
A02MERAH
A01PUTIH
A02PUTIH
 

Aku inginnya ng-query LEFT JOIN dua tabel di atas dengan hasil seperti ini:

xx_namaspesiesjumlah_merah
Anggrek0
Mawar2

 

Sederhana toh? Awalnya ini query-ku:

SELECT tb1.xx_namaspesies, COUNT(tb2.hh_idspesies) AS jumlah_merahFROM tabel_spesies tb1 LEFT JOIN tabel_warna tb2ON tb1.xx_idspesies = tb2.hh_idspesiesWHERE tb2.hh_namawarna = 'MERAH'

 

Tapi yang muncul malah seperti ini:

xx_namaspesiesjumlah_merah
Mawar2

Lha, mana spesies Anggreknya?

 

Setelah mumet lama, ternyata penyelesaiannya sederhana! Hanya mengganti WHERE jadi AND seperti query di bawah ini:

SELECT tb1.xx_namaspesies, COUNT(tb2.hh_idspesies) AS jumlah_merahFROM tabel_spesies tb1 LEFT JOIN tabel_warna tb2ON tb1.xx_idspesies = tb2.hh_idspesiesAND tb2.hh_namawarna = 'MERAH'

 

Kayak orang goblok toh? Hahaha. :D

Tabel dan query di atas sekedar contoh saja. Yang aslinya lebih njelimet karena melibatkan banyak tabel, view, dan function. Maklum, buat kerjaan, hahaha. :D

 

Sebenernya sih bisa juga diaplikasikan dalam dunia blogging kalau ingin melihat laporan seperti di bawah ini.

id artikeljudul artikeljumlah seluruh komentarkomentar sudah dibalaskomentar belum dibalas
1Judul Artikel Pertama24204
2Judul Artikel Kedua61601
3Judul Artikel Ketiga10010