MySQL Part 4- BERMAIN DENGAN JOIN

Posted by Fajar Ramadhan On Thursday, January 20, 2011 0 komentar

Untuk databasenya bisa dowload disini>>>
Adapun Jenis - Jenis Join :

  1. CROSS JOIN
  2. INNER JOIN
  3. NATURAL JOIN
  4. SELF JOIN
  5. LEFT OUTER JOIN
  6. RIGHT OUTER JOIN
  7. FULL OUTER JOIN (sayang tidak support MYSQL, jadi tidak dibahas)


1. Cross Join dan Inner Join
>>Cross dan Inner dengan kondisi :
              -> Biasanya suatu relasi dinyatakan dengan suatu kesamaan nilai yaitu kesamaan 1 atau banyak field di table pertama dengan 1 atau banyak field di tebel kedua.
              -> Dengan menggunkan kondisi relasi, maka baris yang dihasilkan bisa difilter berdasarkan relasi kondisi relasi tersebut.
              -> Untuk Join yang menggunakan koma, gunakan "Where" untuk mendefinisikan kondisi relasi
              -> Untuk Join yang menggunakan Cross Join atau Inner Join, gunakan "ON" untuk mendefinisikan kondisi relasi.
                Contohnya :
                        * select a.employeenumber, a.lastname, a.officecode, b officecode, b.city, o.country
                           from employee a, office b // a = tabel employee, b= tabel office
                           where e.officecode=boffice code

* select a.employeenumber, a.lastname, a.officecode, b officecode, b.city, o.country
                           from employee a, Cross Join office b
                           ON e.officecode=b.officecode

* select a.employeenumber, a.lastname, a.officecode, b officecode, b.city, o.country
                           from employee a Inner Join office b
                           ON e.officecode=b.officecode
>>Cross dan Inner dengan kondisi :
-> Cross dan Inner tanpa menggunakan kondisi akan menghasilkan suatu himpunan Cartesian Product yang akan mengKombinasikan semua baris di table pertama dengan semua baris di tabel ke dua.
-> Jka anda menggunakan join perintah tersebut, maka jika tabel pertama berisi 15 baris dan tabel kedua terdiri dari 3 baris maka akan menghasilkan baris sebanyak 3

2. Natural Joins
-> Ini digunakan untuk menjoinkan 2 tabel atau lebih yang mempunyai 1 atau banyak kolom yang mempunyai nama yang sama dalam semua tabelnya.
-> Jika table 1 mempunyai 2 kolom yang mempunyai nama field yang sama dengan tabel 2, maka natural join akan melakukan kondisi relasi berdasarkan kedua field tersebut.
-> Dengan cara ini tidak perlu mendefinisikan kondisi relasi.
Contoh :
    * select a.employeenumber, a.lastname, a.officecode, b.officecode, b.city, b.country
       from employee a natural join office b;

        Clausa Using : digunakan untuk menyingkat kondiisi relasi yang nama kolomnya identik.
Contoh :
    * select a.employeenumber, a.lastname, a.officecode, b.officecode, b.city, b.country
       from employee a join office b
                    on b.officecode = b.officecode;
                 Menjadi
    ** select a.employeenumber, a.lastname, a.officecode, b.officecode, b.city, b.country
       from employee a join office b
                    using(officecode);

         Join lebih dari 2 tabel :
                  Solusinya :
1. Query yang dibutuhkan membutuhkan 3 field yaitu : OrderNumber dari tabel order, customername dari tabel customers dan firstname dari tabel emlpolye.
2. Berdasarkan skema relasi, ketigak tabel tersebut dihubungkan dengan 2 relasi yaitu :
- orders.customernumber <--> Customers.CustomersNumbers
- customers.salesrepEmployeeNumber <--> Employee.EmployeeNumber
       Contohnya :
1. Menggunakan Koma dan where
select a.ordernumber, b.customername, c.firstname
from orders a, customer b, employees c
where a.customernumber = b.customernumbre AND b.salesrepEmployeeNumber = c.employenumber;
2. Menggunakan JOIN ON
select a.ordernumber, b.customername, c.firstname
from orders a Join Customers B ON a.customerNumber = b.customernumber
join emlpoyees c On b.salesrepEmployeeNumber = c.empolyeenumber
3. Menggunakan Natural Join dan Join
select a.ordernumber, b.customername, c.firstname
from orders a Natural JOIN customers b
Join employees c on b.salesrepEmployeeNumber = c.employeenumber

3. Self Join
-> Suatu kondisi dimana satu tabel berelasi tabel itu sendiri
-> dalam self join, peggunaan alias table pasti digunakan
Contoh : Menampilkan data pegawai lengkap dengan data atasannya. atasannya berasal dari table yang sama.
1. Join dan ON
Select peg.EmployeeNumber NoPegawai, concat_ws(' ',peg.firstName,peg.LastName) namapegawai, peg.reportsTo,
ats.EmployeeNumber NoAtasan,  concat_ws(' ',peg.firstName,peg.LastName) namaAtasan, peg.reportsTo,
From employess peg JOIN employee ats
ON peg.reportsTo = ats.employeeNumber

2. Koma dan Where
Select peg.EmployeeNumber NoPegawai, concat_ws(' ',peg.firstName,peg.LastName) namapegawai, peg.reportsTo,
ats.EmployeeNumber NoAtasan,  concat_ws(' ',peg.firstName,peg.LastName) namaAtasan, peg.reportsTo,
From employess peg JOIN employee ats
Where peg.reportsTo = ats.employeeNumber


4. Left Outer Join
lihat hasil eksekusi yang contoh self join, Tabel yang tidak mempunai relasi di tabel kanan (tabel atasan reportsto, noatasan dan nama atasan null)
maka perlu di filter terhadap yang berisi NULL itu.
Contoh :
  * Select peg.EmployeeNumber NoPegawai, concat_ws(' ',peg.firstName,peg.LastName) namapegawai, peg.reportsTo,
                             ats.EmployeeNumber NoAtasan,  concat_ws(' ',peg.firstName,peg.LastName) namaAtasan, peg.reportsTo,
                 From employess peg LEFT JOIN employee ats
    On peg.reportsTo = ats.employeeNumber
    Where ats.employeeNumber is NULL;

5. Right Outer Join
Kebalikan dari Left Outer Join
Contoh :
  * Select peg.EmployeeNumber NoPegawai, concat_ws(' ',peg.firstName,peg.LastName) namapegawai, peg.reportsTo,
                 ats.EmployeeNumber NoAtasan,  concat_ws(' ',peg.firstName,peg.LastName) namaAtasan, peg.reportsTo,
                 From employess peg RIGHT JOIN employee ats
    On peg.reportsTo = ats.employeeNumber
    Where ats.employeeNumber is NULL;


<< Sebelumnya                                                                                                                      Selanjutnya>>
=========================================================================

0 komentar:

Sign up for PayPal and start accepting credit card payments instantly.