Kendi Kendine Birleştirmeler ve Takma Adlar
Aynı tablo içindeki satırları karşılaştırmak için takma adlar kullanarak bir tabloyu kendisiyle birleştirin (çalışanlar ve yöneticiler, tarihler ve önceki tarihler).
Kendi Kendine Birleştirmeler ve Takma Adlar, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.
Kendisiyle JOIN: Bir Tabloyu Kendisiyle Birleştirme
Bazen ilişki tek bir tablonun içindedir:
- Çalışanlar ↔ Yöneticiler (yönetici bir çalışandır)
- İç içe yorumlar (her yorumun bir üst_kimlik değeri vardır)
- Arkadaş grafiği (kullanıcı ↔ kullanıcı)
Kurulum
Kendisine başvuran bir FK içeren employees tablosu:
CREATE TABLE employees (
id BIGSERIAL PRIMARY KEY,
full_name TEXT NOT NULL,
manager_id BIGINT REFERENCES employees(id)
);Çalışanları Yöneticileriyle JOIN Yapma
Her örneğe farklı bir takma ad verirsiniz:
SELECT e.full_name AS employee, m.full_name AS manager
FROM employees e
JOIN employees m ON m.id = e.manager_id;Takma Adlar Olmadan Derlenmezdi
Takma adlar olmadan hangi full_name değerini kastettiğinizi anlayamazsınız. Her başvuru belirsizdir:
-- ERROR: column reference "full_name" is ambiguous
SELECT full_name FROM employees JOIN employees ON ...Üst Düzey Çalışanlar için LEFT JOIN
INNER JOIN, yöneticisi olmayan çalışanları (örneğin CEO'yu) çıkarır. Onları korumak için LEFT JOIN kullanın:
SELECT e.full_name AS employee, m.full_name AS manager
FROM employees e
LEFT JOIN employees m ON m.id = e.manager_id;İç İçe Yorumlar
Her yorumu üst yorumunun metniyle birlikte gösterin:
SELECT c.id, c.body, p.body AS parent_body
FROM comments c
LEFT JOIN comments p ON p.id = c.parent_id;Çiftler ve Birleşimler
Aynı siparişte yer alan ürün çiftlerini bulun (yinelenen (A,B) ve (B,A) çiftleri olmadan):
SELECT a.id AS product_a, b.id AS product_b
FROM order_items a
JOIN order_items b
ON a.order_id = b.order_id
AND a.product_id < b.product_id;Bitişik Satırları Karşılaştırma
Bir satırın "önceki" sürümüyle kendisiyle JOIN yapın:
SELECT a.id, a.created_at, b.created_at AS prev_at
FROM events a
LEFT JOIN events b ON b.id = a.previous_id;Kendisiyle JOIN ve Pencere İşlevi
"Her satırı öncekiyle karşılaştırma" görevlerinin çoğunda bir pencere işlevi (LAG), kendisiyle JOIN yapmaktan daha basit ve hızlıdır. Bu konu Pencere İşlevlerini Derinlemesine İnceleme bölümünde ele alınmıştır.
Özyinelemeli Kendisiyle JOIN'ler
N düzey derinliğinde ilerlemeniz mi gerekiyor (kuruluş şeması, ileti dizisi ağacı)? Özyinelemeli bir CTE kullanın — bu konu Alt Sorgular ve CTE'ler bölümünde ele alınmıştır.
FK Sütununu Dizinleme
Kendisine başvuran FK sütununa her zaman bir dizin ekleyin. Bu olmadan JOIN, her üst öğe aramasında tablonun tamamını tarar.
CREATE INDEX employees_manager_idx ON employees(manager_id);Özet
Kendine JOIN işlemleri, tek bir tablodaki ilişkileri ele alır.
- İki sanal kopya için iki diğer ad
- Kökleri / üst düzey satırları korumak için LEFT JOIN
- FK sütununu dizinleyin
- Pencere işlevleri, "önceki satır" kalıplarını basitleştirebilir
Hızlı Kontrol
Her çalışanın yöneticisini bulmak için employees tablosunu kendisiyle JOIN ediyorsunuz. Neden diğer adlar gereklidir?
Sıkça Sorulan Sorular
“Kendi Kendine Birleştirmeler ve Takma Adlar” dersi ücretsiz mi?
Evet — “Kendi Kendine Birleştirmeler ve Takma Adlar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.
“Kendi Kendine Birleştirmeler ve Takma Adlar” dersinde ne öğreneceğim?
Aynı tablo içindeki satırları karşılaştırmak için takma adlar kullanarak bir tabloyu kendisiyle birleştirin (çalışanlar ve yöneticiler, tarihler ve önceki tarihler). SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
SQL Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Kendi Kendine Birleştirmeler ve Takma Adlar” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- JOIN Neden Kullanılır (İlişkisel Modelin Özeti)
- INNER JOIN Mekanizması
- LEFT/RIGHT JOIN ve OUTER Birleştirmeleri
- Kendi Kendine Birleştirmeler ve Takma Adlar