Sendika nedir?
Birlikler, birden çok SELECT sorgusundan gelen sonuçları birleştirilmiş bir sonuç kümesinde birleştirir.
Bunun çalışması için tek gereksinim, sütun sayısının birleştirilmesi gereken tüm SELECT sorgularından aynı olması gerektiğidir.
Aşağıdaki gibi iki tablomuz olduğunu varsayalım
Şimdi DISTINCT kullanarak her iki tabloyu birleştirmek için bir UNION sorgusu oluşturalım.
SELECT column1, column2 FROM `table1`UNION DISTINCTSELECT 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, UNION sorgularını yürütürken, hiçbir şey belirtilmezse DISTINCT cümlesini varsayılan olarak kullanır.
Şimdi her iki tabloyu TÜMÜ kullanarak birleştirmek için bir UNION sorgusu oluşturalım.
SELECT `column1`,` column1` FROM `table1`UNION ALLSELECT ` column1`,` column1` FROM `table2`;
Burada yinelenen satırlar dahil edilmiştir ve TÜMÜNÜ kullandığımız için.
Neden sendikalar kullanmalı
Veritabanı tasarımınızda bir kusur olduğunu ve aynı amaca yönelik iki farklı tablo kullandığınızı varsayalım. Yinelenen kayıtların yeni tabloya girmesini atlayarak bu iki tabloyu tek bir tabloda birleştirmek istiyorsunuz. Bu gibi durumlarda UNION 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.
- UNION komutunun çalışması için SELECT deyimlerindeki sütun ve veri türlerinin sayısı aynı olmalıdır.
- DISTINCT deyimi, UNION sorgu sonuç kümesinden yinelenen değerleri elemek için kullanılır. MySQL, UNION sorgularını yürütürken, hiçbir şey belirtilmezse DISTINCT cümlesini varsayılan olarak kullanır.
- ALL yan tümcesi, UNION sorgusundaki tüm yinelenen satırları bile döndürmek için kullanılır.
MySQL çalışma tezgahı kullanarak pratik örnekler
MyFlixDB'mizde birleştirelim
Üyeler tablosundan üyelik_sayı ve tam_adlar
ile
movie_id ve film tablosundan başlık
Aşağıdaki sorguyu kullanabiliriz
SELECT `membership_number`,`full_names` FROM `members`UNIONSELECT `movie_id`,`title` FROM `movies`;
Yukarıdaki komut dosyasını MySQL çalışma tezgahında myflixdb ile çalıştırmak bize aşağıda gösterilen aşağıdaki sonuçları verir.
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 |