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