Friday
QUERY BANYAK TABLE (Pertemuan 3)
Sebuah pernyataan SELECT sederhana adalah cara paling dasar untuk query beberapa tabel. Anda dapat memanggil lebih dari satu tabel dalam klausa FROM untuk menggabungkan hasil dari beberapa tabel. Berikut ini adalah contoh tentang bagaimana ini bekerja:
SELECT table1.column1, table2.column2 DARI table1, table2 MANA table1.column1 = table2.column1;
Dalam contoh ini notasi dot (table1.column1) digunakan untuk menentukan kolom tabel itu berasal. Jika kolom tersebut hanya muncul di salah satu tabel yang direferensikan, Anda tidak perlu menyertakan nama yang memenuhi syarat, tetapi mungkin berguna untuk melakukannya untuk dibaca.
Tabel dipisahkan dalam klausa FROM dengan koma. Anda dapat memasukkan tabel sebanyak yang diperlukan, meskipun beberapa database memiliki batas untuk apa yang mereka efisien dapat menangani sebelum memperkenalkan BERGABUNG pernyataan.
Klausul SQL bergabung menggabungkan catatan dari dua atau lebih tabel dalam database. Ini menciptakan satu set yang dapat disimpan sebagai meja atau digunakan sebagaimana mestinya. Join adalah sarana untuk menggabungkan field dari dua tabel dengan menggunakan nilai-nilai bersama untuk masing-masing. Standar ANSI SQL menetapkan empat jenis JOIN: INNER, OUTER, LEFT, dan RIGHT. Sebagai kasus khusus, meja (dasar meja, pandangan, atau meja bergabung) dapat JOIN untuk dirinya sendiri dalam diri bergabung.
Seorang pemrogram menulis predikat Join untuk mengidentifikasi catatan untuk bergabung. Jika predikat dievaluasi adalah benar, catatan gabungan ini kemudian diproduksi dalam format yang diharapkan, dengan rekor atau tabel sementara.
OUTER JOIN
Sebuah outer join tidak memerlukan setiap record dalam dua tabel bergabung untuk memiliki catatan yang cocok. Tabel bergabung mempertahankan setiap record-bahkan jika ada catatan pencocokan lainnya ada. outer join membagi lebih lanjut ke kiri luar bergabung, kanan luar bergabung, dan luar penuh bergabung, tergantung pada baris tabel dipertahankan (kiri, kanan, atau keduanya).
(Dalam hal ini kiri dan kanan mengacu pada dua sisi dari kata kunci Join.)
Tidak implisit bergabung-notasi untuk luar bergabung ada dalam standar SQL.
Left outer join
Hasil dari kiri luar bergabung (atau hanya kiri bergabung) untuk tabel A dan B selalu berisi semua catatan dari tabel "kiri" (A), bahkan jika bergabung-kondisi tidak menemukan catatan yang cocok dalam tabel "benar" (B). Ini berarti bahwa jika klausa ON cocok 0 (nol) catatan dalam B (untuk record diberikan dalam A), join masih akan kembali baris dalam hasil (untuk catatan itu)-tetapi dengan NULL di setiap kolom dari B. outer join kiri mengembalikan semua nilai dari inner join ditambah semua nilai dalam tabel kiri yang tidak cocok dengan tabel kanan. Dari Oracle 9i seterusnya statement JOIN KIRI Outer dapat digunakan serta lama sintaks Oracle.
Sebagai contoh, ini memungkinkan kita untuk menemukan departemen karyawan, namun masih menunjukkan karyawan (s) bahkan ketika mereka belum ditugaskan ke departemen (bertentangan dengan contoh inner-join di atas, di mana karyawan ditugaskan dikeluarkan dari hasil).
Contoh Left outer join, dengan baris hasil tambahan (dibandingkan dengan inner join) dicetak miring:
SELECT *
FROM karyawan
LEFT Outer JOIN departemen ON employee.DepartmentID = department.DepartmentID;
Right outer join
Sebuah luar hak bergabung (atau kanan join) mirip Left outer join, kecuali dengan perlakuan terhadap tabel terbalik. Setiap baris dari tabel "benar" (B) akan muncul dalam tabel bergabung setidaknya sekali. Jika tidak ada baris yang cocok dari tabel "kiri" (A) ada, NULL akan muncul dalam kolom dari A bagi mereka yang tidak memiliki catatan pertandingan di B.
Sebuah outer join yang tepat mengembalikan semua nilai dari tabel kanan dan nilai-nilai cocok dari tabel kiri (NULL dalam kasus tidak ada predikat join pencocokan). Sebagai contoh, ini memungkinkan kita untuk menemukan setiap karyawan dan departemen nya, namun masih menunjukkan departemen yang tidak memiliki karyawan.
Di bawah ini adalah contoh dari outer join yang tepat, dengan baris hasil tambahan dicetak miring:
SELECT *
FROM karyawan
KANAN Outer JOIN departemen ON employee.DepartmentID = department.DepartmentID;
Full outer join
Secara konseptual, sebuah outer join penuh mengkombinasikan efek dari penerapan outer baik kiri dan kanan bergabung. Dimana record dalam tabel full outer join tidak cocok , set hasil akan memiliki nilai NULL untuk setiap kolom tabel yang tidak memiliki baris yang cocok. Bagi mereka yang melakukan catatan pertandingan, satu baris akan diproduksi dalam hasil set (berisi field diisi dari kedua tabel).
Sebagai contoh, ini memungkinkan kita untuk melihat setiap karyawan yang berada dalam departemen dan masing-masing departemen yang memiliki karyawan, tetapi juga melihat masing-masing karyawan yang bukan merupakan bagian dari departemen dan masing-masing departemen yang tidak memiliki karyawan.
Contoh full outer join:
SELECT *
FROM karyawan
LENGKAP Outer Join departemen ON employee.DepartmentID = department.DepartmentID;