Bagikan melalui


Membuat gabungan mandiri secara manual (Alat Visual Database)

Berlaku untuk:SQL Server

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. Alat Desainer Kueri dan Tampilan (Alat Database Visual) menetapkan alias ke instans tabel kedua.

Misalnya, jika Anda membuat gabungan mandiri untuk menemukan semua pasangan penulis dalam Berkeley, Anda membandingkan city kolom dalam instans pertama tabel terhadap city kolom di 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 AS 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 AS 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 AS 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

Membuat gabungan mandiri secara manual

  1. Tambahkan ke panel Diagram (Alat Visual Database) tabel atau objek bernilai tabel yang ingin Anda kerjakan.

  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 pilih Gabungkan Kondisi dan Jenis dan pilih elipsis (...) di sebelah kanan properti.

  5. Dalam kotak dialog Gabung, ubah 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.