Pages

Thursday, June 30, 2011

SQL Join Revealed -Part 1-

Sedikit catatan SQL Join karena sudah lama gak pegang SQL, biar gak lupa aja.
Ada 2 jenis Join dalam SQL:
1. Inner Join
2. Outer Join

Join / inner join itu kalo kita belajar diagram venn analoginya seperti intersect.
Outer join analoginya seperti Union / gabungan.
Dibedakan menjadi 3 macam :
Biar mudah, saya masukkan juga contoh output dan sample tablenya :)

 


- Left Join
Output semua isi table kiri yang dijoin, sekalipun tidak ada key/PK yang sama/cocok di table kanannya.


- Right Join
Output isi table kanan yang dijoin, sekalipun tidak ada key/PK yang sama/cocok di table kirinya.


- Full Join
Menggabungkan/output isi kedua table sekalipun tidak ada key/PK yang sama/cocok).


Setiap relasi/hubungan antar key yang di join tidak mempunyai pasangannya, maka akan di replace dengan NULL.

Belakangan ini saya juga menemukan ada 2 jenis inner join yang baru bagi saya.
Yaitu:
- Natural Join
Menggabungkan/output isi kedua table berdasarkan nama kolom yang sama tanpa suatu kondisi(qualifier).
Menurut para pengamat, natural join sangat disarankan tidak digunakan.
 

- Cross Join
Menggabungkan/output isi kedua table secara permutasi (Cartesian Products)
Dengan kata lain, cross join akan menghubungkan tiap-tiap kolom table A dengan masing-masing kolom di table B tanpa memperhatikan PK.



Contoh sintaks:
Ket: Khusus untuk inner join bisa di tuliskan secara implisit.
Inner Join
SELECT *
  FROM employee INNER JOIN department
    ON employee.DepartmentID = department.DepartmentID;
Secara emplisit:
SELECT *
  FROM employee, department
    WHERE employee.DepartmentID = department.DepartmentID;
 
Natural Join
SELECT *
  FROM employee NATURAL JOIN department;

Cross Join
SELECT *
  FROM employee CROSS JOIN department;

Ket: sintaks "Outer" sifatnya optional. Lebih disarankan tanpa kata "Outer".

Right Outer Join
SELECT *
  FROM employee RIGHT OUTER JOIN department
    ON employee.DepartmentID = department.DepartmentID;

Left Outer Join
SELECT *
  FROM employee LEFT OUTER JOIN department
    ON employee.DepartmentID = department.DepartmentID;

Full Outer Join
SELECT *
  FROM employee FULL OUTER JOIN department
    ON employee.DepartmentID = department.DepartmentID;

Dalam oracle, terdapat alternatif penulisan left join secara singkat, sbb:
Left Join
SELECT *
  FROM employee, department
    WHERE employee.DepartmentID = department.DepartmentID (+);

Namun sangat tidak disarankan karena tidak menganut standard ANSI. Dan dapat menjadi ambigu.
Dalam Sysbase juga terdapat alternatif penulisan, yaitu dengan menambahkan "*"
SELECT *
  FROM employee, department
    WHERE employee.DepartmentID *= department.DepartmentID ;

Setiap database (Oracle, MSSQL, MySql, PostgreSQL, DB2, dll) memiliki implementasi INNER dan OUTER JOIN yang berbeda-beda. Ada yang tidak memiliki natural join, ada juga yang memiliki. Ada yang memiliki penyingkatan penulisan left dan right join, ada yang tidak.

Kalo ada yang salah, mohon beri comment untuk revisinya ya :D

Tuesday, June 21, 2011

Cek Warna Urine Anda Sekarang

Ternyata warna urine kita bisa dijadikan alat memprediksi kondisi kesehatan kita pada saat itu, ini juga bisa dijadikan acuan bagaimana tindakan yang harus kita ambil setelahnya.
Kenali warna urine ini dan prediksi kesehatannya :
Kuning
"Urine sehat itu berwarna kuning pucat atau kuning gelap", kata konsultan ahli urologi Tim Terry. Hal ini tergantung pada tingkat hidrasi, sehingga jika urine Anda tetap berada di koridor warna kuning, Anda bisa bernapas lega.
Hijau
"Beberapa obat antiseptik dan anestesi memberikan warna semburat hijau pada urine," kata Terry. Ini karena biru metilen, pewarna yang kadang-kadang perlu diperjuangkan ginjal kita. Namun bila urine Anda berwarna hijau tidak usah terlalu khawatir.

Orange
"Ini adalah tanda disfungsi hati," jelas Terry. Jika urine Anda berwarna seperti ini biasanya dibarengi dengan tinja yang berwarna putih, bisa jadi ini karena ikterus obstruktif. Jadi segera ambil tindakan bila urine Anda berwarna orange.
Cokelat
Urine cokelat menampakkan ada masalah ginjal. "Ini bisa menjadi tanda penyakit ginjal yang serius, bahkan fistula," kata Terry. Keadaan ini biasanya karena ada kebocoran usus ke kandung kemih Anda. Segera lari ke dokter Anda untuk kasus ini.

Merah
Ini benar-benar buruk. Merah berarti ada darah dalam urine Anda, dapat mengartikan pendarahan atau kanker. "Pada orang yang berusia lebih dari 40 tahun hipotesis pertama adalah kanker kandung kemih," kata Terry. Segera hubungi dokter dan lakukan deteksi dengan cepat.
Sumber kutipan: Inilah.com, TribuneNews.com

Thursday, June 16, 2011

BRRip dan BDRip

Berhubung lagi sering download-download film hasil encode (walaupun sepertinya illegal, namun bagi saya itu tidak illegal selama tidak diperjualbelikan, karena menganut prinsip "sharing" ) :)

Penasaran dengan perbedaan antara BRRip dan BDRip. Karena untuk jenis "rip" yang satu ini sama-sama bersumber dari BluRay atau resolusi 720p / 1080p.
Berikut perbedaannya dalam bahasa Inggris :

BRRip = An XviD encode from a Blu-Ray release (i.e. a 1080p *.mkv file).

BDRip = An XviD encode directly from a source Blu-Ray disk.

Nah, secara garis besar tidak ada perbedaan antara 2 jenis "Rip" ini. Namun ada sedikit pertimbangan khusus yang dapat membuat keduanya berbeda.
BRRip diambil langsung dari sumber Blu-Ray disk yang sudah di Rip (bukan sumber langsung dari Blu Ray nya), jadi jika sumber RIP yang diambil memiliki error atau AR (aspect ratio) yang buruk, maka hasilnya BRRip juga akan buruk.
Berbeda dengan BDRip, karena rip langsung dari sumbernya (tanpa orang "tengah"), masalah-masalah seperti AR tidak akan ada.

Namun walaupun begitu, kualitas rip baik BRRip maupun BDRip sangat tergantung orang/grup yang bertanggung jawab melakukan rip (encoder) -nya. Hasil akhirnya lebih ditentukan oleh keahlian mereka.

Tuesday, June 7, 2011

7 Deadly Sins = 7 Princes of Hell

Sewaktu menonton film anime Full Metal Alchemist (2002) dan dilanjutkan dengan Remake Full Metal Alchemist Brotherhood (2008 - 2010) yang sesuai dengan jalan cerita komiknya, ditemukan ada 7 villians (penjahat) yang menjadi pemeran antagonis dalam cerita ini.
7 penjahat tersebut memiliki karakter masing-masing yang unik, dimana diatas 7 penjahat tersebut ada "bapa"-nya.
Singkat cerita, bapa ini melahirkan / melepaskan masing-masing karakter yang dimilikinya ke 7 anaknya, dalam hal ini 7 penjahat tersebut.

Masing - masing adalah :
1. Pride
2. Wrath
3. Greed
4. Lust
5. Envy
6. Gluttony
7. Sloth

Pernah menonton pada tahun 2002, namun baru menyadari sekitar tahun 2008 bahwa 7 karakter ini sebenarnya adalah inspirasi dari Seven Princes of Hell dalam tradisi Kristen jaman klasik.

7 Pangeran ini juga dianalogikan sebagai 7 dosa dasar / dosa mematikan yang dimiliki setiap manusia. Masing - masing pangeran neraka tersebut mewakili dosa yang ada pada diri manusia.

Pangeran Iblis ini secara sejarah dikemukakan oleh Peter Binsfield, Jesuit, ditulis pada tahun 1589, yaitu sebagai berikut:
Jika dalam bahasa aslinya dan diterjemahkan ke Inggris adalah sebagai berikut:
  1. luxuria (lechery/lust)
  2. gula (gluttony)
  3. avaritia (avarice/greed)
  4. acedia (acedia/discouragement)
  5. ira (wrath)
  6. invidia (envy)
  7. superbia (pride)

    Mungkin bagi anda ada yang bingung apa perbedaan antara Greedy dan Gluttony?
    Keduanya memiliki arti "serakah", "rakus", "tamak", dan sejenisnya.
    Greedy lebih ke arah serakah dan tamak akan harta, uang, kekayaan, kekuasaan dimana
    Gluttony lebih ke arah rakus terhadap makanan, atau segala sesuatu yang mengenyangkan/memuaskan perut.

    Maaf kalo ada salah, cuman mao sharing yang saya tau :p

    Monday, May 30, 2011

    Common Keyword OOP (Static, Final, Abstract)

    Di java dan C# (karena cuman didalam bahasa itu yang saya tau), terdapat keyword:

    final menunjukkan bahwa class/method/variable yang dideclare dengan keyword final tidak dapat di override ataupun diubah valuenya (khusus untuk variable). Keyword final tidak dapat digabungkan dengan keyword abstract, karena sifatnya bertentangan (compile-error).

    Karakteristik final:
    - Biasanya digunakan untuk deklarasi konstan digabungkan dengan static keyword. Contoh: public static final MOVE = 1;
    - Pengubahan value terhadap variable final; override dan overloading method; pewarisan/inheritance final class akan terjadi compile-error.

    abstract menunjukkan bahwa class/method (agak lupa abstract variable ada di C# apa tidak) bersifat abstrak yang memaksa subclass / child nya untuk mengimplementasi method/class tersebut, jika tidak maka akan terjadi compile-error.

    Karakteristik abstract:
    - Harus di-implemen / di override oleh subclass / child nya, jika tidak akan compile error.
    - Untuk abstract class, memiliki karakteristik yang serupa dengan interface tapi tidak sama.
    - Tidak ada abstract variable dalam Java. (CMIIW)
    - abstract class dapat memiliki konkrit method (tidak abstract), ini merupakan salah satu pembeda dengan interface.

    Dahulu saya paling kesulitan memahami static keyword, namun beruntung sekarang saya sudah cukup paham tentang static, sebelum itu anda harus paham istilah dibawah ini:

    instance = representasi/contoh/bentuk dari blueprint yang ada. Contohnya seperti Budi adalah representasi dari Manusia.
    instantiate = istilah dari pembuatan untuk 1 instance.

    static menunjukkan bahwa class/method/variable yang didefinisikan sebagai static hanya memiliki 1 instance untuk semua. Contohnya adalah dalam pembuatan object X terhadap class HURUF (1 atau lebih object), hanya akan ada 1 instance static method/variable yang dibuat/digenerate untuk 1 object tersebut. Method/variable static tsb adalah milik class HURUF, bukan milik object X, sehingga semua object akan mengakses 1 instance static yang sama milik class HURUF.
    static sangat sering digunakan

    Karakteristik static:
    -  static keyword sering digabungkan dengan final untuk pembuatan konstan.
    - Class dapat bersifat static, namun setiap member class harus bersifat static (mengikuti aturan dan fungsi dari static keyword), tidak mungkin bukan class yang hanya ada 1 instance dalam JVM, tetapi member class nya bisa lebih dari 1 instance?
    - static metod tidak dapat mengakses non-static method/variable.
    - static method dapat mengakses static method/variable.
    - Untuk mengakses non-static method/variable, harus melakukan instantiate terlebih dahulu.

    Prinsip diatas sesuai dengan fungsi dari static keyword. Bukankah sangat aneh bahwa 1 instance yang konkrit (static) memiliki instance yang tidak konkrit / belum jelas? untuk mengaksesnya maka harus dilakukan instantiated terlebih dahulu.
     
    Semoga informasi ini berguna untuk anda.

    Jika ada salah, mohon koreksinya :)
    Maksud hati hanya mao sharing yang saya tau kok :D

    SQL Case Statement / If Else Statement

    Belakangan ini baru dapet tes SQL sederhana tapi sayangnya saya sama sekali tidak mudeng / blank dan tidak mahir dalam SQL. Hal dikarenakan terlalu jarang menggunakan SQL dalam bidang pekerjaan. Hanya query-query sangat sederhana saja, alhasil query sederhana seperti IF-ELSE statement standard dalam SQL saja saya lupa :(

    Berikut catatan pribadi saya yang diambil dari sumber-sumber di internet:

    Saya ingin mengambil result/show column yang hasilnya tergantung pada isi table yang bersangkutan.
    Misal:
      - Ingin menampilkan kolom "TipeHarga" dengan nilai yang diperoleh dari "Harga" yang terdapat pada table.
    - Jika "Harga" > 1000 maka isi kolom "TipeHarga" = Mahal , jika tidak, maka "TipeHarga" = Murah.


    Lewat SQL, hal ini bisa diperoleh dengan kata kunci case , when-then-else.

    CASE [expression]
        WHEN [value | Boolean expression] THEN [return value]
        [ELSE [return value]]
    END


    Contoh:

    SELECT CASE WHEN Harga >= 1000
                THEN 'Mahal'
                ELSE 'Murah'          END as TipeHarga
      From X

    Maka yang tampil adalah kolom "TipeHarga" untuk masing-masing "Harga" < 1000 maka isinya adalah 'Murah', sebaliknya > 1000 isinya 'Mahal'

    Dapat juga seperti ini:
    SELECT CASE Harga
                    WHEN 1 Then '1 Rupiah'
                    WHEN 1000 Then '1000 Rupiah'
                    WHEN 5000 Then '5000 Rupiah'
                    ELSE 'Tidak Diketahui'
    END  as 'Status' 
    From X

    Contoh query lengkapnya :
    select P.Name
         , P.Type
         , PS.SalePrice as Price
         , case when PS.SalePrice > 200
                then 'Expensive'
                else 'Value' end AS PriceType
      from Product P
    inner
      join ProductSale PS
        on P.ProductID = PS.ProductID
     where P.Category = @Category
       and P.Vendor = @Vendor
    order by P.Name desc


    Maaf kalo ada salah, cuman mao sharing yang saya tau :p
    Saran dan Kritik sangat diharapkan :)

    Saturday, May 28, 2011

    Children Learn What They Live With

    Judul diatas mempunyai makna :
    "Anak kecil belajar dari tempat dimana dia hidup/tinggal bersama"

    Anak akan selalu belajar dari orang dewasa dan sekitarnya.

    Jika anak banyak dicela, ia akan terbiasa menyalahkan..
    Jika anak banyak dimusuhi, ia belajar menjadi pemberontak..
    Jika anak hidup dalam ketakutan, ia selalu merasa cemas dalam hidupnya..
    Jika anak sering dikasihani, ia belajar meratapi nasibnya..
    Jika anak dibesarkan dalam olok-olok, ia akan menjadi seorang pemalu..
    Jika anak dikelilingi rasa iri, ia tak akan puas dengan apapun yang dimilikinya..

    Jika anak dibesarkan dalam pengertian, ia akan tumbuh menjadi penyabar..
    Jika anak senantiasa diberi dorongan, ia akan berkembang dengan percaya diri..
    Jika anak dipuji, ia akan terbiasa menghargai orang lain..
    Jika anak diterima dalam lingkungannya, ia akan belajar menyayangi..
    Jika anak tidak banyak dipersalahkan, ia akan senang menjadi diri sendiri..
    Jika anak dibesarkan dalam kejujuran, ia akan terbisa melihat kebenaran..
    Jika anak ditimang tanpa berat sebelah, ia akan besar dalam nilai keadilan..
    Jika anak dibesarkan dalam rasa aman, dia akan mengandalkan diri dan mempercayai orang lain..
    Jika anak tumbuh dalam keramahan, ia akan melihat bahwa dunia itu sungguh indah..
    Kita sering mendengar bahwa anak kecil akan mencontoh hampir semua prilaku dan tingkah laku orang yang disekitarnya. Oleh karena itu, jika anda memiliki anak, tinggal bersama anak, dan menghabiskan waktu bersama anak, jagalah prilaku anda, tunjukkan hal yang positif, bukan hal yang negatif. Karena anak akan meniru apapun yang dilihat dia, baik ataupun buruk, benar ataupun salah.
    So, berilah contoh yang baik kepada anak."