Misalkan kita mempunya contoh data seperti berikut ini
1
2
3
4
5
6
7
8
9
10
| mysql> select * from penggunaan;+----------+-------+--------+-------+-------+-------+-------+--------+| kegiatan | senin | selasa | rabu | kamis | jumat | sabtu | minggu |+----------+-------+--------+-------+-------+-------+-------+--------+| olahraga | ya | tidak | ya | tidak | ya | tidak | tidak || diskusi | tidak | ya | tidak | tidak | tidak | ya | tidak || rapat | ya | tidak | tidak | tidak | tidak | tidak | tidak || ulangan | tidak | ya | ya | ya | tidak | tidak | tidak |+----------+-------+--------+-------+-------+-------+-------+--------+4 rows in set (0.00 sec) |
ketika kita ingin tahu berapa banyak dalam seminggu kegiatan-kegiatan tersebut di atas dilakukan atau tidak. Sebagai contoh untuk kegiatan OLAHRAGA dalam satu minggu dilakukan sebanyak 3 kali dan tidak dilakukan sebanyak 4 kali. jika kita bisa dengan mudah menggunakan PHP dan looping untuk menghitungnya menggunakan logika percabangan IF, misalkan.
1
2
3
4
| if ($row['senin']=='ya') $dilakukan += 1;else $tidak_dilakukan += 1; |
Kalau menggunakan SQL caranya adalah seperti ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| mysql> select penggunaan.* -> , case when senin='ya' then 1 else 0 end -> + case when selasa='ya' then 1 else 0 end -> + case when rabu='ya' then 1 else 0 end -> + case when kamis='ya' then 1 else 0 end -> + case when jumat='ya' then 1 else 0 end -> + case when sabtu='ya' then 1 else 0 end -> + case when minggu='ya' then 1 else 0 end as dilakukan -> , case when senin='tidak' then 1 else 0 end -> + case when selasa='tidak' then 1 else 0 end -> + case when rabu='tidak' then 1 else 0 end -> + case when kamis='tidak' then 1 else 0 end -> + case when jumat='tidak' then 1 else 0 end -> + case when sabtu='tidak' then 1 else 0 end -> + case when minggu='tidak' then 1 else 0 end as tidak_dilakukan -> from penggunaan ; |
Saat menghitung jumlah "dilakukan" kita berikan nilai 1 jika field berisikan 'ya', selain itu beli nilai 0. Dan saat menghitung jumlah "tidak_dilakukan" kita berikan nilai 1 jika field berisikan 'tidak', selain itu beli nilai 0. Setelah itu jumlahkan semua CASE clause tersebut sehingga kita dapatkan hasil seperti ini
1
2
3
4
5
6
7
8
9
| +----------+-------+--------+-------+-------+-------+-------+--------+-----------+-----------------+| kegiatan | senin | selasa | rabu | kamis | jumat | sabtu | minggu | dilakukan | tidak_dilakukan |+----------+-------+--------+-------+-------+-------+-------+--------+-----------+-----------------+| olahraga | ya | tidak | ya | tidak | ya | tidak | tidak | 3 | 4 || diskusi | tidak | ya | tidak | tidak | tidak | ya | tidak | 2 | 5 || rapat | ya | tidak | tidak | tidak | tidak | tidak | tidak | 1 | 6 || ulangan | tidak | ya | ya | ya | tidak | tidak | tidak | 3 | 4 |+----------+-------+--------+-------+-------+-------+-------+--------+-----------+-----------------+4 rows in set (0.00 sec) |
Tadaaaa..... Bagaimana? Luar biasa, bukan?
Dengan satu perintah SQL, kita bisa mendapatkan data yang matang dan ketika membuat program PHP-nya kita cukup menmpilkannya saja dalam bertuk <table></table> dan tidak perlu menghitung-hitung lagi. Mudah dan Cepat (y)
- See more at: http://pojokprogrammer.net/content/belajar-sql-case-clause-logika-percabangan#sthash.NaSBqJ3E.dpuf
No comments:
Post a Comment