Selasa, November 17, 2009

Tentang SQL JOIN

JOIN SQL klausul ini digunakan setiap kali kita harus memilih data dari 2 atau lebih tabel.

Untuk dapat menggunakan klausa JOIN SQL untuk mengekstrak data dari 2 (atau lebih) tabel, kita membutuhkan sebuah hubungan antara kolom-kolom tertentu dalam tabel ini.

Kita akan menggambarkan JOIN SQL kita contoh dengan tabel 2 berikut:

Customers:

CustomerID FirstName LastName Email DOB Phone
1 John Smith John.Smith@yahoo.com 2/4/1968 626 222-2222
2 Steven Goldfish goldfish@fishhere.net 4/4/1974 323 455-4545
3 Paula Brown pb@herowndomain.org 5/24/1978 416 323-3232
4 James Smith jim@supergig.co.uk 20/10/1980 416 323-8888


Sales:

CustomerID Date SaleAmount
2 5/6/2004 $100.22
1 5/7/2004 $99.95
3 5/7/2004 $122.95
3 5/13/2004 $100.00
4 5/22/2004 $555.55


Seperti yang anda lihat tabel 2 tersebut memiliki field yang disebut CustomerID dan berkat yang kita dapat mengekstraksi informasi dari kedua tabel dengan cara mencocokkan kolom Pelanggan mereka.

Perhatikan pernyataan SQL berikut:


SELECT Customers.FirstName, Customers.LastName, SUM(Sales.SaleAmount) AS SalesPerCustomer
FROM Customers, Sales
WHERE Customers.CustomerID = Sales.CustomerID
GROUP BY Customers.FirstName, Customers.LastName


Ekspresi SQL di atas akan memilih semua pelanggan yang berbeda (pertama dan terakhir nama) dan masing-masing total jumlah dolar yang mereka telah menghabiskan waktu.
JOIN SQL Kondisi ini sudah ditentukan setelah klausa WHERE SQL dan mengatakan bahwa 2 tabel harus dicocokkan oleh masing-masing kolom ID Pelanggan.

Berikut adalah hasil dari pernyataan SQL ini:

FirstName LastName SalesPerCustomers
John Smith $99.95
Steven Goldfish $100.22
Paula Brown $222.95
James Smith $555.55

Statemen di atas dapat ditulis ulang dengan menggunakan klausa JOIN SQL seperti ini:


SELECT Customers.FirstName, Customers.LastName, SUM (Sales.SaleAmount) SEBAGAI SalesPerCustomer
JOIN DARI Pelanggan Penjualan
ON Customers.CustomerID = Sales.CustomerID
GROUP BY Customers.FirstName, Customers.LastName

Ada 2 jenis SQL bergabung - INNER OUTER bergabung dan bergabung. Jika Anda tidak menaruh OUTER INNER atau kata kunci di depan JOIN SQL kata kunci, maka INNER JOIN digunakan. Singkatnya "INNER JOIN" = "JOIN" (perlu diketahui bahwa database yang berbeda memiliki sintaks yang berbeda untuk mereka klausa JOIN).

The INNER JOIN akan memilih semua baris dari kedua tabel selama ada kecocokan antara kolom yang sesuai pada kita. Jika kami memiliki pelanggan di tabel Pelanggan, yang masih belum membuat perintah apapun (tidak ada entri untuk pelanggan ini dalam tabel Penjualan), pelanggan ini tidak akan tercantum dalam hasil query SQL kita di atas.

Jika meja Penjualan memiliki baris berikut:

CustomerID Date SaleAmount
2 5/6/2004 $100.22
1 5/6/2004 $99.95

Dan kita menggunakan SQL yang sama BERGABUNG pernyataan dari atas:


SELECT Customers.FirstName, Customers.LastName, SUM (Sales.SaleAmount) SEBAGAI SalesPerCustomer
JOIN DARI Pelanggan Penjualan
ON Customers.CustomerID = Sales.CustomerID
GROUP BY Customers.FirstName, Customers.LastName

Kita akan mendapatkan hasil berikut:

FirstName LastName SalesPerCustomers
John Smith $99.95
Steven Goldfish $100.22


Meskipun Paula dan James yang terdaftar sebagai pelanggan di tabel Pelanggan mereka tidak akan ditampilkan karena mereka tidak membeli apa pun.

Tetapi bagaimana jika Anda ingin menampilkan semua pelanggan dan penjualan mereka, tidak peduli apakah mereka telah memerintahkan sesuatu atau tidak? Kita akan melakukannya dengan bantuan SQL klausa OUTER JOIN.

Tipe kedua JOIN SQL disebut SQL OUTER JOIN dan memiliki 2 sub-jenis yang disebut LEFT OUTER JOIN dan RIGHT OUTER JOIN.

Yang LEFT OUTER JOIN atau hanya LEFT JOIN (Anda dapat menghilangkan kata kunci OUTER di sebagian besar database), memilih semua baris dari tabel pertama yang terdaftar setelah DARI klausa, tidak peduli apakah mereka memiliki pertandingan di tabel kedua.

Jika kita sedikit mengubah pernyataan SQL terakhir kami ke:


SELECT Customers.FirstName, Customers.LastName, SUM (Sales.SaleAmount) SEBAGAI SalesPerCustomer
DARI Pelanggan LEFT JOIN Penjualan
ON Customers.CustomerID = Sales.CustomerID
GROUP BY Customers.FirstName, Customers.LastName

dan meja Penjualan masih memiliki baris berikut:

CustomerID Date SaleAmount
2 5/6/2004 $100.22
1 5/6/2004 $99.95

Hasilnya akan menjadi sebagai berikut:

FirstName LastName SalesPerCustomers
John Smith $99.95
Steven Goldfish $100.22
Paula Brown NULL
James Smith NULL


Seperti yang anda lihat kami telah memilih segala sesuatu dari Pelanggan (meja pertama). Untuk semua baris dari Nasabah, yang tidak memiliki pertandingan di Penjualan (meja kedua), yang memiliki jumlah kolom SalesPerCustomer NULL (NULL berarti sebuah kolom berisi apa-apa).

The RIGHT OUTER JOIN atau RIGHT JOIN SQL berperilaku persis seperti LEFT JOIN, hanya saja kembali semua baris dari kedua tabel (tabel yang tepat dalam pernyataan JOIN SQL).

sumber : http://www.sql-tutorial.net/SQL-JOIN.asp

Tidak ada komentar: