SQL Kendi Kendine Katılma

Sql Kendi Kendine Katilma



İlişkisel veritabanlarının en bilinen özelliklerinden biri birleştirmelerdir. Birleştirmeler ilişkisel veritabanlarının en güçlü ve karmaşık özelliklerinden biridir. Performanstan ödün vermeden veritabanı tabloları arasında kapsamlı modülerliğe ve çok karmaşık ilişkilere izin verirler.

Bununla birlikte, SQL'de radarın altına girme eğiliminde olan ve kendi kendine katılma olarak bilinen bir birleştirme türü vardır.

SQL'de kendi kendine birleştirme, aynı tablodaki satırları aynı tablodaki ilgili sütuna göre birleştirmemize olanak tanıyan güçlü bir tekniktir.







Birden fazla tablodan veri aldığımız SQL'deki diğer birleştirme türlerinden farklı olarak, kendi kendine birleştirme tek bir tabloda çalışır.



Verileri tablodan arayabilecekken neden kendi kendine katılmaya ihtiyacım olduğunu merak edebilirsiniz. Bu doğru olsa da, kendi kendine katılma, yinelenen veri sorguları gerçekleştirmeniz veya hiyerarşik bir veri bulmanız gerektiğinde görevlerde yardımcı olabilir.



Esasen, kendi kendine birleştirme, aynı tablonun satırlarını karşılaştırmanız gerektiğinde temel bir rol oynar.





Kendi kendine katılmanın ne olduğunu, nasıl çalıştığını ve bunları bir SQL tablosunda nasıl kullanabileceğimizi keşfederken bu yazıya bize katılın.

NOT: Dalmadan önce gösteri amaçlı temel bir tablo oluşturacağız. Ancak desteklenen herhangi bir veri kümesini kullanabilirsiniz.



Örnek veri

Aşağıdaki sorgular ürün bilgilerini içeren temel bir tablo oluşturur ve örnek kayıtları tabloya ekler. Bu, SQL'de kendi kendine birleştirmelerle nasıl çalışılacağını göstermemize olanak tanır.

CREATE TABLE Ürünler (
ürün_id INT BİRİNCİL ANAHTAR,
ürün_adı VARCHAR(255) NULL DEĞİL,
ebeveyn_id INT
);

Tabloya 10 örnek kayıt ekleyin.

Ürünlere INSERT (product_id, ürün_name, parent_id) DEĞERLER
(1, 'Elektronik', BOŞ),
(2, 'Akıllı Telefonlar', 1),
(3, 'Dizüstü Bilgisayarlar', 1),
(4, 'iPhone 13', 2),
(5, 'Samsung Galaxy S21', 2),
(6, 'MacBook Pro', 3),
(7, 'Dell XPS 15', 3),
(8, 'Aksesuarlar', BOŞ),
(9, 'Telefon Kılıfları', 8),
(10, 'Dizüstü Bilgisayar Çantaları', 8);

Ortaya çıkan tablo aşağıdaki gibidir:

Örnek 1: Temel Kendi Kendine Katılma

Temel bir kendi kendine birleştirmeyle başlayalım. Örneğin, aynı tablonun ebeveyn-çocuk ilişkisini almak için basit bir kendi kendine birleştirme yöntemini kullanabiliriz.

Örneğin, tüm ürünleri ve bunlara karşılık gelen ana ürünleri bulmak için bunu kullanabiliriz. Aşağıdaki gibi bir sorgu çalıştırabiliriz:

c.product_name AS child_product, p.product_name AS parent_product SEÇİN
ÜRÜNLERDEN c
LEFT JOIN Ürünler p ON c.parent_id = p.product_id;

Verilen örnek sorguda alt ürünleri temsil eden ürün tablosu için takma ad olarak “c” kullanıyoruz.

Ayrıca ürün tablosu için ana ürünleri temsil edecek “p” takma adını da oluşturuyoruz.

Bir sonraki adımda, üst düzey ürünlerin sonuca dahil edilmesini sağlamak için temel bir SQL LEFT JOIN kullanıyoruz.

Son olarak “parent_id” ve “product_id” sütunlarını kullanarak alt ve üst kayıtlar arasında ilişki oluşturmak için ON cümlesini kullanıyoruz.

Ortaya çıkan tablo aşağıdaki gibidir:

Ana ürünlerin, kök öğeler olarak da bilinen hiyerarşinin en üstünde yer almaları nedeniyle bir üst bağlantıya sahip olmadığını fark edeceksiniz.

Örnek 2: Hiyerarşik Veri Getirme

Kendi kendine katılmanın en temel rollerinden biri hiyerarşik bir veriyi almaktır. Örneğin, ürünün 'Aksesuarlar'a eşit olduğu tüm alt ürünleri almak istediğimizi varsayalım. Kendi kendine birleştirme kullanarak sorguyu aşağıdaki gibi çalıştırabiliriz:

c.product_name'i child_product OLARAK SEÇİN
ÜRÜNLERDEN c
KATILIN Ürünler p ON c.parent_id = p.product_id
WHERE p.product_name = 'Aksesuarlar';

Bu durumda ürünler tablosunu kendisiyle birleştirmek için JOIN kullanırız ve ardından istediğimiz sonuçları filtrelemek için WHERE yan tümcesini kullanırız.

Çözüm

Bu eğitimde, kendi kendine birleştirmenin ne olduğunu, nasıl çalıştığını ve bunu hiyerarşik bir veriyi almak veya özyinelemeli sorgular gerçekleştirmek için SQL tablosunda nasıl kullanabileceğimizi araştırdık.