Bagikan melalui


Membuat Self-Joins Secara Manual (Perangkat Database Visual)

Anda dapat menggabungkan tabel ke tabel itu sendiri meskipun tabel tidak memiliki hubungan refleksif dalam database. Misalnya, Anda dapat menggunakan gabungan mandiri untuk menemukan pasangan penulis yang tinggal di kota yang sama.

Seperti halnya gabungan apa pun, gabungan mandiri memerlukan setidaknya dua tabel. Perbedaannya adalah, alih-alih menambahkan tabel kedua ke kueri, Anda menambahkan instans kedua dari tabel yang sama. Dengan begitu, Anda dapat membandingkan kolom dalam instans pertama tabel dengan kolom yang sama di instans kedua, yang memungkinkan Anda membandingkan nilai dalam kolom satu sama lain. Query and View Designer menetapkan alias ke instans kedua tabel.

Misalnya, jika Anda membuat self-join untuk menemukan semua pasangan penulis di dalam Berkeley, Anda membandingkan kolom city pada instans pertama tabel dengan kolom city pada instans kedua. Kueri yang dihasilkan mungkin terlihat seperti berikut ini:

SELECT   
      authors.au_fname,   
      authors.au_lname,   
      authors1.au_fname AS Expr2,   
      authors1.au_lname AS Expr3  
   FROM   
      authors   
         INNER JOIN  
         authors authors1   
            ON authors.city   
             = authors1.city  
   WHERE  
      authors.city = 'Berkeley'  

Membuat gabungan mandiri sering memerlukan beberapa kondisi gabungan. Untuk memahami alasannya, pertimbangkan hasil kueri sebelumnya:

Cheryl Carson       Cheryl Carson  
Abraham Bennet      Abraham Bennet  
Cheryl Carson       Abraham Bennet  
Abraham Bennet      Cheryl Carson  

Baris pertama tidak berguna; Itu menunjukkan bahwa Cheryl Carson tinggal di kota yang sama dengan Cheryl Carson. Baris kedua sama-sama tidak berguna. Untuk menghilangkan data yang tidak berguna ini, Anda menambahkan kondisi lain yang hanya mempertahankan baris hasil di mana dua nama penulis mengacu pada penulis yang berbeda. Kueri yang dihasilkan mungkin terlihat seperti ini:

SELECT   
      authors.au_fname,   
      authors.au_lname,   
      authors1.au_fname AS Expr2,   
      authors1.au_lname AS Expr3  
   FROM   
      authors   
         INNER JOIN  
         authors authors1   
            ON authors.city   
             = authors1.city  
            AND authors.au_id  
             <> authors1.au_id  
   WHERE  
      authors.city = 'Berkeley'  

Peningkatan pada kumpulan hasil:

Cheryl Carson       Abraham Bennet  
Abraham Bennet      Cheryl Carson  

Tetapi dua baris hasil tersebut redundan. Yang pertama mengatakan Carson tinggal di kota yang sama dengan Bennet, dan yang kedua mengatakan Bennet tinggal di kota yang sama dengan Carson. Untuk menghilangkan redundansi ini, Anda dapat mengubah kondisi gabungan kedua dari "tidak sama dengan" menjadi "kurang dari." Kueri yang dihasilkan mungkin terlihat seperti ini:

SELECT   
      authors.au_fname,   
      authors.au_lname,   
      authors1.au_fname AS Expr2,   
      authors1.au_lname AS Expr3  
   FROM   
      authors   
         INNER JOIN  
         authors authors1   
            ON authors.city   
             = authors1.city  
            AND authors.au_id  
             < authors1.au_id  
   WHERE  
      authors.city = 'Berkeley'  

Dan tataan hasilnya terlihat seperti ini:

Cheryl Carson       Abraham Bennet  

Untuk membuat gabungan mandiri secara manual

  1. Tambahkan tabel atau objek bernilai tabel yang ingin Anda kerjakan ke panel Diagram .

  2. Tambahkan tabel yang sama lagi, sehingga panel Diagram memperlihatkan tabel atau objek bernilai tabel yang sama dua kali dalam panel Diagram.

    Desainer Kueri dan Tampilan menetapkan alias ke instans kedua dengan menambahkan nomor berurutan ke nama tabel. Selain itu, Kueri dan Perancang Tampilan membuat garis penghubung antara dua kemunculan tabel atau objek bernilai tabel di dalam panel Diagram.

  3. Klik kanan baris gabungan dan pilih properti dari menu pintasan.

  4. Di jendela Properti klik Kondisi Gabungan dan Ketik dan klik elipsis (...) di sebelah kanan properti.

  5. Dalam Kotak Dialog Gabung mengubah operator perbandingan antara kunci primer sesuai kebutuhan. Misalnya, Anda dapat mengubah operator menjadi kurang dari (<).

  6. Buat kondisi gabungan tambahan (misalnya, authors.zip = authors1.zip) dengan menyeret nama kolom gabungan utama dalam kemunculan pertama tabel atau objek bernilai tabel dan letakkan pada kolom yang sesuai di kemunculan kedua.

  7. Tentukan opsi lain untuk kueri seperti kolom output, kondisi pencarian, dan urutan pengurutan.

Lihat Juga

Buat Self-Joins Secara Otomatis (Alat Database Visual)
Kueri dengan Penggabungan (Alat Visual Database)