copas dari http://tinawati.blogspot.com/2011/06/sql-inner-join-join-kata-kunci-yang.html
Rabu, 08 Juni 2011
SQL INNER JOIN
SQL INNER JOIN
JOIN kata kunci yang digunakan dalam pernyataan SQL untuk melakukan query data dari dua atau lebih tabel, yang didasarkan pada hubungan antara kolom-kolom tertentu dalam tabel ini.
Tabel dalam database sering berhubungan satu sama lain dengan kunci.
Sebuah primary key adalah kolom/field (atau kombinasi dari kolom/field) dengan nilai unik untuk setiap baris. Setiap nilai kunci primer harus unik di dalam tabel (tidak boleh ada nilai field kuncinya sama). Tujuannya adalah untuk mengikat data bersama-sama, di meja, tanpa mengulang semua data dalam setiap tabel.
Buat Database Latihan_nim
Buat Tabel Person
Field
|
Type
|
Size/Panjang
|
Keterangan
|
P_Id
|
Char
|
1
|
Primary Key
|
LastName
|
Varchar
|
15
| |
FirstName
|
Varchar
|
15
| |
Address
|
Varchar
|
30
| |
City
|
Varchar
|
20
|
Buat Tabel Orders
Field
|
Type
|
Size/Panjang
|
Keterangan
|
O_Id
|
Char
|
1
|
Primary Key
|
OrderNo
|
Int
| ||
Jml
|
Int
| ||
Harga
|
Int
| ||
P_Id
|
Char
|
1
|
Lihat pada tabel “Person” berikut:
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
1
|
Hansen
|
Ola
|
Timoteivn 10
|
Sandnes
|
2
|
Svendson
|
Tove
|
Borgvn 23
|
Sandnes
|
3
|
Pettersen
|
Kari
|
Storgt 20
|
Stavanger
|
Perhatikan bahwa field/kolom "P_Id" adalah kunci utama dalam tabel "Person". Ini berarti bahwa tidak ada dua baris record dapat memiliki P_Id yang sama. P_Id akan membedakan dua orang bahkan jika mereka memiliki nama yang sama.
Kemudian kita memiliki tabel “Orders” berikut:
O_Id
|
OrderNo
|
Jml
|
Harga
|
P_Id
|
1
|
77895
|
2
|
30000
|
3
|
2
|
44678
|
1
|
20000
|
3
|
3
|
22456
|
3
|
10000
|
1
|
4
|
24562
|
4
|
15000
|
1
|
5
|
34764
|
5
|
25000
|
15
|
Perhatikan bahwa kolom/field "O_Id" adalah kunci utama dalam tabel "Pegawai" dan kolom/field "P_Id" mengacu pada orang-orang dalam tabel "Person" tanpa menggunakan nama mereka.
Perhatikan bahwa hubungan antara dua tabel di atas adalah kolom/field "P_Id".
Perhatikan bahwa hubungan antara dua tabel di atas adalah kolom/field "P_Id".
Sebelum kita melanjutkan dengan contoh-contoh, kami akan membuat daftar jenis JOIN yang bisa anda gunakan, dan perbedaan-perbedaannya.
1.INNER JOIN
INNER JOIN: hanya akan menampilkan baris untuk data yang memiliki nilai yang sama pada field kunci dengan tabel yang berelasi.
Sintax dari SQL INNER JOIN
SELECT table_name.column_name...
FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name
Order By table_name.column_name
|
Contoh SQL INNER JOIN
Tabel "Person" :
P_Id
|
LastName
|
FirstName
|
Address
|
City
|
1
|
Hansen
|
Ola
|
Timoteivn 10
|
Sandnes
|
2
|
Svendson
|
Tove
|
Borgvn 23
|
Sandnes
|
3
|
Pettersen
|
Kari
|
Storgt 20
|
Stavanger
|
Tabel "Orders" :
O_Id
|
OrderNo
|
Jml
|
Harga
|
P_Id
|
1
|
77895
|
2
|
30000
|
3
|
2
|
44678
|
1
|
20000
|
3
|
3
|
22456
|
3
|
10000
|
1
|
4
|
24562
|
4
|
15000
|
1
|
5
|
34764
|
5
|
25000
|
15
|
Sekarang kita ingin membuat daftar semua orang dengan perintah. Kita menggunakan SELECT berikut:
Tampilkan Sebagai Berikut :
Field
|
Table
|
LastName
|
Person
|
FirstName
|
Person
|
P_Id
|
Orders
|
SELECT Person.LastName, Person.FirstName, Orders.OrderNo
FROM Person INNER JOIN Orders ON Person.P_Id=Orders.P_Id |
Hasil-set akan terlihat seperti ini:
LastName
|
FirstName
|
OrderNo
|
Hansen
|
Ola
|
22456
|
Hansen
|
Ola
|
24562
|
Pettersen
|
Kari
|
77895
|
Pettersen
|
Kari
|
44678
|
Dari hasil join dapat dilihat yang tampil hanya jika nilai pada field kunci tabel “Person” terdapat pada tabel “Order”.
Tampilkan Sebagai Berikut:
Field
|
Table
|
LastName
|
Person
|
Address
|
Person
|
Jml
|
Orders
|
Harga
|
Orders
|
Total
|
=Jml*Harga
|
SELECT Person.LastName, Person.Address,Orders.Jml,
Order.Harga,(Jml*Harga)As Total
FROM Person INNER JOIN Orders ON Person.P_Id=Orders.P_Id |
Tampilkan Sebagai Berikut:
Field
|
Table
|
LastName
|
Person
|
Address
|
Person
|
OrderNo
|
Orders
|
Jml
|
Orders
|
Harga
|
Orders
|
Total
|
Ekspressi
|
Diskon
|
Ekspressi
|
Bayar
|
Ekspressi
|
Ketentuan Ekspressi:
- Total : Jml*Harga
- Diskon : Jika jml>4,maka diskon 10% dari harga, jika jml>2,maka diskon 5% dari harga, selain itu tidak dapat diskon.
- Bayar : Total-Diskon
SELECT Person.LastName, Person.Address,Orders.OrderNo,Orders.Jml,Order.Harga,
(Jml*Harga)As Total,
if(Jml>4,10/100*Harga,if(Jml>2,5/100*Harga,0))As Diskon, (Jml*Harga)-
if(Jml>4,10/100*Harga,if(Jml>2,5/100*Harga,0)))As Bayar
FROM Person INNER JOIN Orders ON Person.P_Id=Orders.P_Id |
dfgdfg
ReplyDeletehttp://www.kaskus.co.id/thread/000000000000000010942811/-