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 table2Her 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
| id | name |
| 1 | Lena |
| 2 | Leonie |
england_people
| id | ad |
| 1 | George |
| 2 | Lena |
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_peopleSonuç:
| 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_peopleSonuç:
| 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 DESCSonuç:
| name | total_count |
| Lena | 2 |
| Leonie | 1 |
| George | 1 |
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.
Görev
KolayMevcut 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
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
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns