JOIN türleri (INNER/LEFT/RIGHT/FULL/CROSS)
Oracle
-- INNER: eşleşen satırlar
SELECT m.ad, s.tutar
FROM musteri m JOIN siparis s ON m.id = s.musteri_id;
-- LEFT: siparişi olmayan müşteriler de gelir
SELECT m.ad, s.tutar
FROM musteri m LEFT JOIN siparis s ON m.id = s.musteri_id;
-- CROSS: kartezyen çarpım
SELECT r.ad, u.ad FROM renk r CROSS JOIN urun u;JOIN iki tabloyu belirtilen koşula göre birleştirir. INNER yalnız eşleşenleri; LEFT/RIGHT bir taraftaki tüm satırları (eşleşme yoksa NULL); FULL her iki taraftakileri; CROSS tüm kombinasyonları döndürür. Oracle standart ANSI JOIN yanında eski (+) dış birleştirme söz dizimini de destekler.
PostgreSQL
SELECT m.ad, s.tutar
FROM musteri m INNER JOIN siparis s ON m.id = s.musteri_id;
SELECT m.ad, s.tutar
FROM musteri m LEFT JOIN siparis s ON m.id = s.musteri_id;
SELECT m.ad, s.tutar
FROM musteri m FULL OUTER JOIN siparis s ON m.id = s.musteri_id;PostgreSQL tüm standart JOIN türlerini (INNER, LEFT/RIGHT/FULL OUTER, CROSS) tam destekler. USING(sutun) ortak adlı sütunlarda kısa yazım, NATURAL JOIN ise aynı adlı tüm sütunlarda otomatik birleştirme sağlar (dikkatli kullanın).
MySQL
SELECT m.ad, s.tutar
FROM musteri m INNER JOIN siparis s ON m.id = s.musteri_id;
SELECT m.ad, s.tutar
FROM musteri m LEFT JOIN siparis s ON m.id = s.musteri_id;
-- MySQL'de FULL OUTER JOIN yoktur:
SELECT m.ad, s.tutar FROM musteri m LEFT JOIN siparis s ON m.id = s.musteri_id
UNION
SELECT m.ad, s.tutar FROM musteri m RIGHT JOIN siparis s ON m.id = s.musteri_id;MySQL/MariaDB INNER, LEFT, RIGHT ve CROSS JOIN'i destekler ama FULL OUTER JOIN'i doğrudan sunmaz; LEFT ve RIGHT sonuçlarını UNION ile birleştirerek taklit edilir. Virgülle yazılan eski birleştirme kartezyen çarpım üretir, ON/WHERE ile kısıtlanmalıdır.
SQL Server
SELECT m.ad, s.tutar
FROM musteri m INNER JOIN siparis s ON m.id = s.musteri_id;
SELECT m.ad, s.tutar
FROM musteri m LEFT JOIN siparis s ON m.id = s.musteri_id;
SELECT m.ad, s.tutar
FROM musteri m FULL OUTER JOIN siparis s ON m.id = s.musteri_id;SQL Server tüm standart JOIN türlerini destekler. Eski *= / =* dış birleştirme operatörleri artık kaldırılmıştır; ANSI JOIN söz dizimi kullanılmalıdır. APPLY (CROSS/OUTER APPLY) ise satır bazlı ilişkili alt sorgular için ek bir birleştirme biçimidir.
MongoDB
// En yakın karşılık: $lookup (sol dış birleştirme)
db.musteri.aggregate([
{ $lookup: {
from: "siparis",
localField: "id",
foreignField: "musteri_id",
as: "siparisler"
} }
])MongoDB'de klasik JOIN yoktur; $lookup aggregation aşaması bir koleksiyondan eşleşen belgeleri dizi olarak getirir (sol dış birleştirmeye benzer). INNER benzeri sonuç için sonrasında $match ile boş dizileri süzer, $unwind ile diziyi satırlara açarsınız.
Redis
# Uygulanamaz: Redis'te tablo ve JOIN yoktur.Redis ilişkisel birleştirme sunmaz; veriler genelde denormalize edilir veya ilişkiler istemci tarafında birden çok anahtarı okuyarak kurulur. Sınırlı birleştirme benzeri sorgular için RediSearch (FT.AGGREGATE) kullanılabilir; RedisGraph modülünün desteği 2023'te sona erdi.
Elasticsearch
# Uygulanamaz: dağıtık yapıda genel JOIN yoktur.
# Sınırlı seçenekler: nested, parent/child (join alanı),
# terms lookup. Genelde veri indeksleme sırasında denormalize edilir.Elasticsearch dağıtık mimarisi nedeniyle rastgele tablolar arası JOIN sunmaz. Sınırlı ilişki için tek index içinde 'nested' ve aynı shard'da 'join' (parent/child) alan tipleri vardır. En yaygın çözüm veriyi indeksleme aşamasında denormalize etmektir.