Selasa, 03 Januari 2012

JOIN

Structured Query Language (SQL) Joins digunakan untuk mengambil data dari 2 tabel atau lebih, yang didasarkan pada relasi antara kolom (atribut) tertentu pada tabel tersebut. Tabel-tabel dalam database biasanya selalu memiliki relasi satu sama lain pada atribut kuncinya.
Atribut kunci (primary key) adalah sebuah kolom (atau kombinasi kolom) dengan nilai isian unik (pasti berbeda) pada tiap baris. Tujuan adanya atribut kunci adalah untuk mengikat data bersama, lintas tabel, tanpa perulangan seluruh data di setiap tabel.

Contoh Relasi antar tabel dan jenis SQL Joins

Perhatikan tabel “Personal” berikut ini
P_Id LastName FirstName Address City
1 Cannavaro Fabio Real Madrid 5 Napoli
2 Ribas Diego Werder Bremen 10 Sao Paulo
3 D’Agostino Getano Udinese 11 Udine
Perhatikan kolom “P_Id” adalah primary key pada tabel “Personal”. Hal ini berarti, tidak ada baris yang memiliki P_Id yang sama. P_Id membedakan 2 orang atau lebih, terutama untuk nama yang sama.
Perhatikan tabel “Orderan” :
O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15
Perhatikan bahwa kolom “O_Id” adalah primary key pada tabel “Orderan” dan kolom”P_Id” mengacu ke orang pada tabel “Persons” tanpa menggunakan namanya.
Relasi antara kedua tabel di atas terletak pada kolom “P_Id”.

Jenis SQL Joins

  • JOIN (atau INNER JOIN): Mengambil baris jika terdapat minimal satu kecocokan pada kedua tabel yang dipasangkan
    contoh Query :
    SELECT Personal.LastName, Personal.FirstName, Orderan.OrderNo
    FROM Personal
    INNER JOIN Orderan ON Personal.P_Id=Orderan.P_Id
    ORDER BY Personal.LastName

    Hasil Query:
    LastName FirstName OrderNo
    Cannavaro Fabio 22456
    Cannavaro Fabio 24562
    D’Agostino Getano 77895
    D’Agostino Getano 44678
  • LEFT JOIN: Mengambil seluruh baris di ‘tabel kiri’, meskipun tidak ada kecocokan dengan ‘tabel kanan’
    contoh Query:
    SELECT Personal.LastName, Personal.FirstName, Orderan.OrderNo
    FROM Personal
    LEFT JOIN Orderan ON Personal.P_Id=Orderan.P_Id
    ORDER BY Personal.LastName

    Hasil Query:
    LastName FirstName OrderNo
    Cannavaro Fabio 22456
    Cannavaro Fabio 24562
    D’Agostino Getano 77895
    D’Agostino Getano 44678
    Ribas Diego
  • RIGHT JOIN: Mengambil seluruh baris di ‘tabel kanan’, meskipun tidak ada kecocokan dengan ‘tabel kiri’
    contoh Query:
    SELECT Personal.LastName, Personal.FirstName, Orderan.OrderNo
    FROM Personal
    RIGHT JOIN Orderan ON Personal.P_Id=Orderan.P_Id
    ORDER BY Personal.LastName

    Hasil Query:
    LastName FirstName OrderNo
    Cannavaro Fabio 22456
    Cannavaro Fabio 24562
    D’Agostino Getano 77895
    D’Agostino Getano 44678


    34764
  • FULL JOIN: Mengambil baris jika terdapat kecocokan di satu tabel saja
    contoh Query:
    SELECT Personal.LastName, Personal.FirstName, Orderan.OrderNo
    FROM Personal
    FULL JOIN Orderan ON Personal.P_Id=Orderan.P_Id
    ORDER BY Personal.LastName

    Hasil Query:
    LastName FirstName OrderNo
    Cannavaro Fabio 22456
    Cannavaro Fabio 24562
    D’Agostino Getano 77895
    D’Agostino Getano 44678
    Ribas Diego


    34764

Tidak ada komentar:

Posting Komentar