Menu
Coddy logo textTech

Union

Coddy'nin SQL Journey'sinin Temeller bölümünün bir parçası — ders 48 / 72.

Union'lar join'lerden farklıdır. Join'ler tabloları birleştirmek için koşulları kullanır, ancak union'lar sadece iki tabloyu birbiri üzerine ekler. UNION kullanmak için şöyle yazarız:

SELECT col1, col2, ... FROM table1
UNION
SELECT col1, col2, ... FROM table2

Her iki select de aşağıdaki kurallara uymalıdır:

  • Alan sayısı eşit olmalıdır
  • Sıralama önemlidir
  • Aynı yerdeki sütunların veri tipleri eşleşmelidir

Örneğin, aşağıdaki tablolara sahip olduğumuzu varsayalım:

germany_people

idname
1Lena
2Leonie

england_people

idad
1George
2Lena

Problem: Sahip olduğumuz tüm isimlerden oluşan tek bir büyük tablo oluşturmak istiyoruz.

SELECT name from germany_people
UNION
SELECT name from england_people

Sonuç:

ad
Lena
Leonie
George

UNION yalnızca benzersiz değerleri döndürürken, UNION ALL tüm kayıtları olduğu gibi döndürür:

SELECT name from germany_people
UNION ALL
SELECT name from england_people

Sonuç:

ad
Lena
Leonie
George
Lena

Verileri birden fazla tablo genelinde özetlemek için UNION ALL ifadesini toplama fonksiyonları, GROUP BY ve ORDER BY ile de birleştirebilirsiniz. Püf noktası, UNION ALL ifadesini bir alt sorgu içine sarmak, ardından üzerine gruplama ve sıralama uygulamaktır.

Örneğin, her bir ismin her iki tabloda kaç kez geçtiğini saymak istediğimizi varsayalım:

SELECT name, COUNT(*) AS total_count
FROM (
    SELECT name FROM germany_people
    UNION ALL
    SELECT name FROM england_people
) AS combined
GROUP BY name
ORDER BY total_count DESC

Sonuç:

nametotal_count
Lena2
Leonie1
George1

Burada, UNION ALL (UNION değil), Lena gibi yinelenenlerin korunması için kullanılır — aksi takdirde sayma işleminden önce kaldırılırlardı. Alt sorgu tüm satırları birleştirir ve ardından GROUP BY + COUNT bunları özetler. ORDER BY nihai sonucu sıralar.

challenge icon

Görev

Kolay

Mevcut tablolar ve sütunlar:

  • <strong>sales_2009</strong>: <strong>product_id</strong>, <strong>quantity_sold</strong>
  • <strong>sales_2010</strong>: <strong>product_id</strong>, <strong>quantity_sold</strong>
  • <strong>sales_2011</strong>: <strong>product_id</strong>, <strong>quantity_sold</strong>

3 adet satış tablosu bulunmaktadır.

Tüm tablolardaki her bir ürün için toplam satış miktarını bulun.

Sonuç, product_id sütununu ve toplam satışları içermelidir.

Bu sütunu total_sales olarak adlandırın.

Sonuçları toplam satışa göre azalan düzende sıralayın.

Kendin dene

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler