Dhafiq Sagara adalah orang bodoh yang tidak bisa apa-apa, tapi dia selalu berusaha untuk terus menjadi yang lebih baik. Rasa keingin-tahuannya sangat tinggi, selalu berusaha dan terus berusaha, trial dan error adalah prinsip belajarnya.

30 Jan 2010

SQL - Query Menggabungkan 3 Tabel Database


SQL  (Structured Query Language) adalah sebuah bahasa yang digunakan untuk mengakses data dalam relasi database. Bahasa query ini merupakan bahasa standart yang digunakan dalam memanajemen database. Query ini merupakan standar ANSI bahasa pemrograman komputer SQL yang dapat menjalankan query terhadap database. SQL dapat menambahkan data, mengedit data, menghapus data dan menampilkan data.


Sesuai kegunaan dan perkembangannya, SQL memiliki beberapa versi, tetapi agar  tidak terjadi kekeliruan dibuat standar oleh ANSI, mereka harus memiliki  keywords utama yang dipakai secara umum yaitu (SELECT, UPDATE, DELETE, INSERT). SELECT untuk menampilkan isi data. UPDATE untuk mengubah data, DELETE untuk menghapus data, INSERT untuk menambahkan data.


Saya akan membahas query database untuk menggabungkan 3 Tabel dalam satu database. Ini bermula dari proyek saya yang harus menampilkan isi dari 3 tabel yang saling terhubung melalui foreign key.


Dari contoh berikut ini terdapat 3 tabel yaitu: biodata_mahasiswa, status_fakjur, status_jenis_kelamin.
  • biodata_mahasiswa terdiri dari kolom: nim_biodata, nama_biodata, kode_fakjur (merupakan foreign key dari tabel status_fakjur), id_jenis_kelamin (foreign key dari tabel status_jenis_kelamin)
  • status_fakjur terdiri dari kolom: kode_fakjur, nama_fakultas_fakjur
  • status_jenis_kelamin terdiri dari kolom: id_jenis_kelamin, jenis_kelamin

Jadi untuk menampilkan isi dari ketiga tabel tersebut adalah dengan menggunakan perintah berikut:
SELECT bm.nim_biodata, bm.nama_biodata, bm.kode_fakjur, sf.nama_fakultas_fakjur, sjk.jenis_kelamin
FROM (biodata_mahasiswa bm LEFT JOIN status_fakjur sf ON bm.kode_fakjur = sf.kode_fakjur)
LEFT JOIN status_jenis_kelamin sjk ON bm.id_jenis_kelamin = sjk.id_jenis_kelamin;


Berikut adalah tampilan dari hasil query tersebut:

24 komentar:

  1. mas kalo mau nampilin yang jenis kelamin laki-laki aja harus tambahin apa ya?
    :-)
    mohon bimbingannya

    BalasHapus
  2. ditambahin "where" aja gan, jadinya kayak gini:

    SELECT bm.nim_biodata, bm.nama_biodata, bm.kode_fakjur, sf.nama_fakultas_fakjur, sjk.jenis_kelamin
    FROM (biodata_mahasiswa bm LEFT JOIN status_fakjur sf ON bm.kode_fakjur = sf.kode_fakjur)
    LEFT JOIN status_jenis_kelamin sjk ON bm.id_jenis_kelamin = sjk.id_jenis_kelamin
    where sjk.jenis_kelamin="Laki-Laki";

    BalasHapus
  3. ouh kalo mau nampilin berdasarkan fakjur 'pasca' juga sama ya tinggal where aja
    :D

    BalasHapus
  4. yup tinggal dikasik syarat "where" aja sam

    BalasHapus
  5. oia mau nanya lagi :D
    perbedaan inner join, outer join, sama left join apa ya mas??

    semoga sukses blognya gan, dan makin rame

    BalasHapus
  6. pada dasarnya, inner join itu join secara standard. klo outer join itu ada 2 macam: left outer join dan right outer join. left join itu sama dengan left outer join. gak ada bedanya.

    left outer join itu misalkan gini, ada table A dan B yg saling berkaitan. hal yg disamakan tersebut itu berdasarkan pada tabel yg ada di kiri (dalam hal ini tabel A). Misal di A ada kolom id_b, dan di tabel B jg ada kolom id_b, maka data yg disamakan adalah dari id_b yg ada dikolom A. klo right outer join itu kebalikannya, yaitu berdasarkan kolom B, jadi urutannya berdasarkan kolom B.

    gmn gan? sudah cukup jelas atau kurang?

    BalasHapus
  7. oke oke, jadi hanya beda pengurutan saja ya?

    makasih gan udah ngerti koq
    :D

    btw display blog ini koq ada tulisan 403 forbiden?
    ada yang salah di ane atau gimana nih gan?

    BalasHapus
  8. ma'af mas kl boleh tanya, gimana ya shyntax OQL untuk menjoinkan beberapa table??

    thank's

    BalasHapus
  9. @Bhoriem: wah saya blm pernah coba OQL mas...

    BalasHapus
  10. makasih bro...salam dari newbi..yang lg punyeng php...tetep semangat

    BalasHapus
  11. mas kalo inner join gimana carana ya??

    BalasHapus
  12. mas kalo inner join gimana carana ya??

    BalasHapus
  13. numpang nax dong
    saya mau gabungin data dari 3 tabel,
    T.Transaksi, T.Service ma T.Penjualan
    di masing2 tabel ada field kd_transaksi
    datax mau muncul kalok di T.Service dan T.Penjualan terisi kd_transaksi yang sama.
    sedangkan di program yg sy buat, pada suatu transaksi bisa hanya melakukan penjualan atau service saja sekaligus melakukan keduanya
    pas sy panggil munculin semua data tp tp tp tp tp tp tp
    yang melakukan service saja
    dan melakukan penjualan saja tidak mau muncul
    hanya yg melakukan service dan penjualan aja yg muncullllllllllll
    tlng bantuannya donk...........

    putuaryanata@gmail.com

    BalasHapus
  14. ass...
    kasus ane sama percis ma tutor yg diatas cuma field name yang samma bikin program ane galau nie gan... ane dah coba :

    ("SELECT b.name, c.name, a.margin, a.start, a.end FROM acarabrand as a cross join brand as b cross join acara as c on a.brand_id=b.id AND a.acara_id=c.id");

    tampil sich cuma yg bagian b.name dan c.name malah output/ hasilnya sama a.brand_id=b.id gan,...

    ane coba cara yang diatas
    ("SELECT a.margin, a.start, a.end, a.acara_id, a.brand_id, b.name, c.name FROM (acarabrand a LEFT JOIN acara b ON a.acara_id=b.id) LEFT JOIN brand c ON a.brand_id=c.id");

    HAsilnya sama juga gan... saya sudah pake Variabel pun masih sama, gimana supaya b.name, dan c.name hasilnya sesuai yang diingkan...??? o.Oa

    MOHON PENCERAHANNYA.... Thanx...

    BalasHapus
  15. maaf nebie kak,
    mau tanya kl mode simpan nya gimana ?

    BalasHapus
  16. Sam, kalau untuk update bisa gak?? Kira-kira querynya seperti apa?? Mohon dibantu.. Terimakasih..

    BalasHapus
  17. kalau misal menyimpan 3 tabel sekaligus gimana?

    BalasHapus