Aracılığıyla paylaş


Kendi kendine birleşimler oluşturmayı elle yapın (Görsel Veritabanı Araçları)

Şunlar için geçerlidir: SQL Server

Veritabanında esnek bir ilişki olmasa bile tabloyu kendi kendine birleştirebilirsiniz. Örneğin, aynı şehirde yaşayan yazar çiftlerini bulmak için kendi kendine birleştirme kullanabilirsiniz.

Herhangi bir birleşimde olduğu gibi, self-join için en az iki tablo gereklidir. Fark, sorguya ikinci bir tablo eklemek yerine aynı tablonun ikinci bir örneğini eklemenizdir. Bu şekilde, tablonun ilk örneğindeki bir sütunu ikinci örnekteki aynı sütunla karşılaştırabilirsiniz ve bu da bir sütundaki değerleri birbiriyle karşılaştırmanıza olanak tanır. Sorgu ve Görünüm Tasarımcısı Araçları (Visual Database Araçları), tablonun ikinci örneğine bir diğer ad atar.

Örneğin, Berkeley'deki tüm yazar çiftlerini bulmak için kendi kendine birleştirme yapıyorsanız, tablonun ilk örneğindeki city sütununu ikinci örnekteki city sütunuyla karşılaştırırsınız. Sonuçta elde edilen sorgu aşağıdaki gibi görünebilir:

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';

Kendi kendine birleştirme oluşturmak için genellikle birden çok birleştirme koşulu gerekir. Nedenini anlamak için önceki sorgunun sonucunu göz önünde bulundurun:

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

İlk satır işe yaramaz; Cheryl Carson'ın Cheryl Carson ile aynı şehirde yaşadığını gösteriyor. İkinci satır da aynı derecede işe yaramaz. Bu işe yaramaz verileri ortadan kaldırmak için, yalnızca iki yazar adının farklı yazarları tanımladığı sonuç satırlarını koruyan başka bir koşul eklersiniz. Sonuçta elde edilen sorgu aşağıdaki gibi görünebilir:

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';

Sonuç kümesi geliştirildi:

Cheryl Carson       Abraham Bennet
Abraham Bennet      Cheryl Carson

Ancak iki sonuç satırı yedeklidir. Birincisi Carson'ın Bennet ile aynı şehirde yaşadığını, ikincisi ise Bennet'in Carson ile aynı şehirde yaşadığını söylüyor. Bu yedekliliği ortadan kaldırmak için ikinci birleştirme koşulunu "eşit değil" yerine "küçüktür" olarak değiştirebilirsiniz. Sonuçta elde edilen sorgu aşağıdaki gibi görünebilir:

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';

Sonuç kümesi şöyle görünür:

Cheryl Carson       Abraham Bennet

Kendi kendine birleşimi elle oluşturun

  1. Çalışmak istediğiniz tabloyu veya tablo değerli nesneyi Diyagram bölmesine (Visual Database Araçları) ekleyin.

  2. Diyagram bölmesinde aynı tabloyu veya tablo değerli nesneyi iki kez göstermek için aynı tabloyu yeniden ekleyin.

    Sorgu ve Görünüm Tasarımcısı, tablo adına sıralı bir sayı ekleyerek ikinci örneğe bir diğer ad atar. Buna ek olarak, Sorgu ve Görünüm Tasarımcısı, Diyagram bölmesinde tablonun veya tablo değerli nesnenin iki oluşumu arasında bir birleştirme çizgisi oluşturur.

  3. Birleştirme satırına sağ tıklayın ve kısayol menüsünden Özellikler'i seçin.

  4. Özellikler penceresinde Birleştirme Koşulu ve Türü'nü seçin ve özelliğin sağındaki üç nokta simgesine (...) tıklayın.

  5. Katıl iletişim kutusunda, birincil anahtarlar arasındaki karşılaştırma işlecini gerektiği gibi değiştirin. Örneğin, işlecini (< değerinden küçük) olarak değiştirebilirsiniz.

  6. Tablo veya tablo değerli nesnenin ilk geçtiği yerde birincil birleştirme sütununun adını sürükleyip ikinci oluşumda ilgili sütuna bırakarak ek birleştirme koşulu (örneğin, authors.zip = authors1.zip) oluşturun.

  7. Sorgu için çıkış sütunları, arama koşulları ve sıralama düzeni gibi diğer seçenekleri belirtin.