Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
Çalışmak istediğiniz tabloyu veya tablo değerli nesneyi Diyagram bölmesine (Visual Database Araçları) ekleyin.
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.
Birleştirme satırına sağ tıklayın ve kısayol menüsünden Özellikler'i seçin.
Özellikler penceresinde Birleştirme Koşulu ve Türü'nü seçin ve özelliğin sağındaki üç nokta simgesine (...) tıklayın.
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.
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.
Sorgu için çıkış sütunları, arama koşulları ve sıralama düzeni gibi diğer seçenekleri belirtin.