LEFT OUTER JOIN dua tabel dengan lebih dari satu kondisi

Hui panjang bener yak judulnya hehehe… Habis kagak nemu judul yg lebih singkat gitu. Biar aq ato temen-temen yg lain mudah buat carinya.

Ow iya, ini tulisan aq tentang gimana bikin LEFT OUTER JOIN dari dua tabel tapi dengan beberapa kondisi yang berbeda, seperti contohnya kita mau ambil data dari dua tabel yang memiliki id dan judul sama misalnya. Sebagai studi kasus aq, tadi aq mau ambil data dari database DetailTransaksi dan DetailKembali yang memiliki kesamaan TransaksiId dan BukuId.

Awalnya aq pakai statement seperti ini :

SELECT DetailTransaksiId, MasterBuku.JudulBuku, TanggalKembali FROM DetailTransaksi LEFT OUTER JOIN MasterBuku ON MasterBuku.BukuId = DetailTransaksi.BukuId LEFT OUTER JOIN Kembali ON Kembali.BukuId = DetailTransaksi.BukuId LEFT OUTER JOIN Kembali ON Kembali.TransaksiId = DetailTransaksi.TransaksiId WHERE (DetailTransaksi.TransaksiId = 2);

ato gampangnya kayak gini :

SELECT a.1, b.2 FROM b LEFT OUTER JOIN a on b.1=a.1 LEFT OUTER JOIN a on b.2=a.2;

tapi malah keluar error Not unique table/alias: 'a'

So, yang bener gimana? Kayak gini nih yang bener :

SELECT DetailTransaksiId, MasterBuku.JudulBuku, TanggalKembali FROM DetailTransaksi LEFT OUTER JOIN MasterBuku ON MasterBuku.BukuId = DetailTransaksi.BukuId LEFT OUTER JOIN Kembali ON Kembali.TransaksiId = DetailTransaksi.TransaksiId AND Kembali.BukuId = DetailTransaksi.BukuId WHERE (DetailTransaksi.TransaksiId = 2);

ato gampangnya kayak gini :

SELECT a.1, b.2 FROM b LEFT OUTER JOIN a on b.1=a.1 AND b.2=a.2;

dan ketemu deh😉

9 Komentar (+add yours?)

  1. eshabe
    Jan 21, 2009 @ 23:51:11

    O… gitu tho…?!
    Thx tips-nya.

    Balas

  2. ayusa
    Jan 22, 2009 @ 08:26:06

    thanx kunjungannya pak eshabe… salam BBC aja deh🙂

    Balas

  3. heru
    Jan 22, 2009 @ 14:32:56

    itu jeroan apa mbae?…

    kug kayaknya saya kenal yah
    😀

    Balas

  4. ayusa
    Jan 22, 2009 @ 14:39:15

    itu jeroan sapi mase. hmmm maknyus dibikin soto😉

    Balas

  5. Saman
    Jan 22, 2009 @ 22:25:32

    dipermudah aja non..
    select a.1, b.2 from a, b where a.1=b.1 and a.2=b.2;

    — mungkin gitu juga bisa. coba aja bandingkan.

    Balas

  6. ayusa
    Jan 23, 2009 @ 08:02:59

    @mas saman : beda atuh mas, klo cara mas saman itu kan reguler join atau sama dengan select a.1, b.2 from a, b join a on a.1=b=1 and a.2=b.2 . maka keluarnya di query data yg bener2 sama antara a.1=b.1, a.2=b.2, sedangkan data yg null gak akan ditampilkan. nah untuk kasus aq ini aq mau menampilkan semua data meskipun di tabel b tuh null. dan left outer join berarti tabel sebelah kiri harus ditampilkan meskipun tabel sebelah kanan isinya null atau kosong. untuk kasusku aq mau menampilkan data peminjaman buku dari tabel detail transaksi dan detail kembali, data akan ditampilkan meskipun buku belum kembali yg artinya di tabel detail kembali isinya null. kalau pake cara mas saman maka data yg ditampilkan hanya data dimana dua2 tabel ada isinya. artinya data gak akan tampil jika buku belum dikembalikan.. itu mas bedanya reguler join sama outer join. btw thanx ya commentnya…

    Balas

  7. Tono Batam
    Jan 30, 2009 @ 10:49:55

    pagi Non,…
    Mohon petunjuknya untuk program pascal berikut ini:

    1) tulislah program yg dapat mengalikan dua bilangan bulat panjang di mana jumplah digit maksimum untuk masing masing bilangan adalah 100.

    Masukan dari program ini adalah string, yaitu dua bilangan yang akan dikalikan.

    keluaran dari program ini adalah string hasil perkalian dua ‘bilangan’ di atas

    petunjuk: gunakan larik karakter untuk menyimpan bilangan bulat, jangan menggunakan string. hal ini karena hasil perkalian 100 digit angka dengan 100 digit angkamungkin menghasilkan 10.000 digit angka!

    Balas

  8. Ndie
    Feb 20, 2009 @ 11:17:39

    Yaaaccchhh..
    Pokok bahasan nya SQL..malah nanya pascal…; (piszz Bro) :p
    btw thanx mbak e.. buat info bout left outer nya

    Balas

  9. ayusa
    Mar 17, 2009 @ 08:32:56

    @ Tono Batam : ho’o neh mas, lagi bahas mysql. kapan ya kalau bahas pascal. hmmm nunggu kuliah dulu kali baru aq belajar pascal. hehehe just kidding

    @ Ndie : sama2.. semoga bermanfaat

    Balas

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: