PostgreSQL INNER JOIN
PostgreSQL INNER JOIN yan tümcesine giriş
Bir ilişki veritabanında, veriler tipik olarak birden fazla tabloda dağıtılır. Tam verileri seçmek için genellikle birden çok tablodan veri sorgulamanız gerekir.
Bu öğreticide, INNER JOIN
yan tümceyi kullanarak birden çok tablodaki verilerin nasıl birleştirileceğine odaklanıyoruz .
A ve B tablonuz olduğunu varsayalım. A tablosu, değeri B tablosunun fka sütunundaki değerlerle eşleşen bir pka sütununa sahiptir.

Her iki tablodan da veri seçmek için INNER JOIN
ifadedeki yan tümceyi SELECT
aşağıdaki gibi kullanırsınız:
SELECT pka, c1, pkb, c2 FROM A INNER JOIN B ON pka = fka;
Kod dili: SQL (Yapılandırılmış Sorgu Dili) ( sql )
Tabloyu katılmak için A
tabloyla B
, şu adımları izleyin:
- İlk olarak,
SELECT
yan tümcede veri seçmek istediğiniz her iki tablodan sütunları belirtin . - İkincisi, ana tablo ie, tablo belirtmek
A
içindeFROM
maddesi. - Üçüncüsü, yan tümcede ikinci tabloyu (tablo
B
) belirtinINNER JOIN
veON
anahtar kelimeden sonra bir birleştirme koşulu sağlayın .
INNER JOIN
İşler nasıl .
Tablodaki her satır için A
iç birleştirme, pka sütunundaki değeri tablodaki her satırın fka sütunundaki değerle karşılaştırır B
:
- Bu değerler eşitse, iç birleştirme her iki tablonun tüm sütunlarını içeren yeni bir satır oluşturur ve bunu sonuç kümesine ekler.
- Bu değerlerin eşit olmaması durumunda, iç birleştirme onları yok sayar ve bir sonraki satıra geçer.
Aşağıdaki Venn şeması, INNER JOIN
yan tümcenin nasıl çalıştığını gösterir.

Çoğu zaman, katılmak istediğiniz tablolar aynı ada sahip sütunlara sahip olacaktır, örneğin, id
sütun benzeri customer_id
.
Bir sorguda farklı tablolardan aynı ada sahip sütunlara başvurursanız hata alırsınız. Hatayı önlemek için, aşağıdaki sözdizimini kullanarak bu sütunları tam olarak nitelendirmeniz gerekir:
table_name.column_name
Kod dili: CSS ( css )
Pratikte, sorguyu daha okunabilir hale getirmek için birleştirilmiş tablolara kısa adlar atamak için tablo takma adlarını kullanacaksınız.
PostgreSQL INNER JOIN örnekleri
Cümlenin kullanımına birkaç örnek verelim INNER JOIN
.
1) İki tabloyu birleştirmek için PostgreSQL INNER JOIN'i kullanma
Örnek veritabanındakicustomer
ve payment
tablolarına bir göz atalım .

Bu tablolarda müşteri ödeme yaptığında payment
tabloya yeni bir satır eklenir .
Her müşterinin sıfır veya birçok ödemesi olabilir. Ancak her ödeme tek bir müşteriye aittir. customer_id
Kolon iki tablo arasında ilişki kurar.
Aşağıdaki ifade INNER JOIN
, her iki tablodan da veri seçmek için yan tümceyi kullanır :
SELECT customer.customer_id, first_name, last_name, amount, payment_date FROM customer INNER JOIN payment ON payment.customer_id = customer.customer_id ORDER BY payment_date;
Kod dili: SQL (Yapılandırılmış Sorgu Dili) ( sql )

Aşağıdaki sorgu aynı sonucu döndürür. Ancak, tablo takma adlarını kullanır:
SELECT c.customer_id, first_name, last_name, email, amount, payment_date FROM customer c INNER JOIN payment p ON p.customer_id = c.customer_id WHERE c.customer_id = 2;
Kod dili: SQL (Yapılandırılmış Sorgu Dili) ( sql )
Her iki tablo da aynı customer_id
sütuna sahip olduğundan USING
sözdizimini kullanabilirsiniz :
SELECT customer_id, first_name, last_name, amount, payment_date FROM customer INNER JOIN payment USING(customer_id) ORDER BY payment_date;
Kod dili: SQL (Yapılandırılmış Sorgu Dili) ( sql )
2) Üç tabloyu birleştirmek için PostgreSQL INNER JOIN'i kullanma
Aşağıdaki diyagram, üç tablo arasındaki ilişkiyi gösterir: staff
, payment
, ve customer
.
- Her personel sıfır veya çok sayıda ödeme yapar. Ve her ödeme tek bir personel tarafından işlenir.
- Her müşteri sıfır veya çok ödeme yaptı. Her ödeme bir müşteri tarafından yapılır.

Üç tabloyu birleştirmek için, ikinci INNER JOIN
yan tümceyi ilk INNER JOIN
yan tümceden sonra aşağıdaki sorgu olarak yerleştirirsiniz:
SELECT c.customer_id, c.first_name customer_first_name, c.last_name customer_last_name, s.first_name staff_first_name, s.last_name staff_last_name, amount, payment_date FROM customer c INNER JOIN payment p ON p.customer_id = c.customer_id INNER JOIN staff s ON p.staff_id = s.staff_id ORDER BY payment_date;
Kod dili: SQL (Yapılandırılmış Sorgu Dili) ( sql )

Üçten fazla tabloyu birleştirmek için aynı tekniği uygularsınız.
Kaynak