Maw Mumet!

- karena banyak hal yang tidak bisa diselesaikan sambil ngendog -

LEFT JOIN COUNT Null Result

{ 9.Des.2015 } { koding }

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_idspesies xx_namaspesies
A01 Anggrek
A02 Mawar
hh_idspesies hh_namawarna
A01 PUTIH
A02 MERAH
A02 MERAH
A01 PUTIH
A02 PUTIH
 

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

xx_namaspesies jumlah_merah
Anggrek 0
Mawar 2

 

Sederhana toh? Awalnya ini query-ku:

SELECT tb1.xx_namaspesies, COUNT(tb2.hh_idspesies) AS jumlah_merah
FROM tabel_spesies tb1 LEFT JOIN tabel_warna tb2
ON tb1.xx_idspesies = tb2.hh_idspesies
WHERE tb2.hh_namawarna = 'MERAH'

 

Tapi yang muncul malah seperti ini:

xx_namaspesies jumlah_merah
Mawar 2

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_merah
FROM tabel_spesies tb1 LEFT JOIN tabel_warna tb2
ON tb1.xx_idspesies = tb2.hh_idspesies
AND 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 artikel judul artikel jumlah seluruh komentar komentar sudah dibalas komentar belum dibalas
1 Judul Artikel Pertama 24 20 4
2 Judul Artikel Kedua 61 60 1
3 Judul Artikel Ketiga 10 0 10

 

Kata Kunci

    A PHP Error was encountered

    Severity: Notice

    Message: Undefined variable: tx

    Filename: libraries/Customclass.php

    Line Number: 88

    Backtrace:

    File: /home/wijna/web/wijna-mumet/public_html/application/libraries/Customclass.php
    Line: 88
    Function: _error_handler

    File: /home/wijna/web/wijna-mumet/public_html/application/views/body_post.php
    Line: 15
    Function: build_url

    File: /home/wijna/web/wijna-mumet/public_html/application/views/header.php
    Line: 94
    Function: view

    File: /home/wijna/web/wijna-mumet/public_html/application/models/Mdisplay.php
    Line: 14
    Function: view

    File: /home/wijna/web/wijna-mumet/public_html/application/controllers/Startupp.php
    Line: 53
    Function: _display

    File: /home/wijna/web/wijna-mumet/public_html/index.php
    Line: 315
    Function: require_once