MySQL UNION – Eğitimi Tamamla
Birlik nedir?
Birlikler, birden fazla SELECT sorgusunun sonuçlarını birleştirilmiş bir sonuç kümesinde birleştirir.
Bunun çalışması için gereken tek gereksinim, birleştirilmesi gereken tüm SELECT sorgularındaki sütun sayısının aynı olmasıdır.
Diyelim ki aşağıdaki gibi iki tablomuz var
Şimdi her iki tabloyu DISTINCT kullanarak birleştirmek için bir UNION sorgusu oluşturalım
SELECT column1, column2 FROM `table1` UNION DISTINCT SELECT column1,column2 FROM `table2`;
Burada yinelenen satırlar kaldırılır ve yalnızca benzersiz satırlar döndürülür.
Not: MySQL Hiçbir şey belirtilmemişse UNION sorguları yürütülürken DISTINCT yan tümcesini varsayılan olarak kullanır.
Şimdi ALL kullanarak her iki tabloyu birleştirmek için bir UNION sorgusu oluşturalım.
SELECT `column1`,` column1` FROM `table1` UNION ALL SELECT ` column1`,` column1` FROM `table2`;
Burada yinelenen satırlar dahil edilmiştir ve ALL kullandığımızdan beri.
Birlikleri neden kullanmalı?
Veritabanı tasarımınızda bir kusur olduğunu ve aynı amaca yönelik iki farklı tablo kullandığınızı varsayalım. Bu iki tabloyu tek bir tablo içinde birleştirmek ve yinelenen kayıtların yeni tabloya sızmasını engellemek istiyorsunuz. Bu gibi durumlarda UNION'u kullanabilirsiniz.
ÖZET
- UNION komutu, birden fazla SELECT sorgusu sonucunu, tüm seçme sorgularından satırlar içeren tek bir sorguda birleştirmek için kullanılır.
- Sütun sayısı ve veri türleri SELECT ifadeleri UNION komutunun çalışması için aynı olması gerekir.
- DISTINCT yan tümcesi, UNION sorgu sonuç kümesindeki yinelenen değerleri ortadan kaldırmak için kullanılır. MySQL Hiçbir şey belirtilmemişse UNION sorguları yürütülürken DISTINCT yan tümcesini varsayılan olarak kullanır.
- ALL yan tümcesi, UNION sorgusunda yinelenen tüm satırları bile döndürmek için kullanılır.
Kullanarak pratik örnekler MySQL tezgâh
myFlixDB'mizde birleştirelim
Üyeler tablosundaki üyelik_numarası ve tam_adlar
ile
movie_id ve film tablosundan başlık
Aşağıdaki sorguyu kullanabiliriz
SELECT `membership_number`,`full_names` FROM `members` UNION SELECT `movie_id`,`title` FROM `movies`;
Yukarıdaki betiğin çalıştırılması MySQL tezgâh myflixdb'ye karşı yaptığımız karşılaştırma bize aşağıda gösterilen sonuçları veriyor.
membership_number | full_names |
---|---|
1 | Janet Jones |
2 | Janet Smith Jones |
3 | Robert Phil |
4 | Gloria Williams |
5 | Leonard Hofstadter |
6 | Sheldon Cooper |
7 | Rajesh Koothrappali |
8 | Leslie Winkle |
9 | Howard Wolowitz |
16 | 67% Guilty |
6 | Angels and Demons |
4 | Code Name Black |
5 | Daddy's Little Girls |
7 | Davinci Code |
2 | Forgetting Sarah Marshal |
9 | Honey mooners |
19 | movie 3 |
1 | Pirates of the Caribean 4 |
18 | sample movie |
17 | The Great Dictator |
3 | X-Men |