Birbiri ile bağlantısı bulunmayan iki tablodan yada iki veri kümesindeki verileri tek küme halinde birleştirmek için kullanılan yöntemdir. Bunun için dikkat etmeniz gerekenler;
* Her iki sorgunun select ile gösterilecek alan sayısı aynı olmalıdır.
* Her iki sorgunun gösterilecek alanların sırası ve her birinin veri türü aynı olmalı
* Her iki sorgunun gösterilecek alanların sırası ve her birinin veri türü aynı olmalı
* Sorgularda üretilmiş alan var ise as ile isim verilmeli
* Her bir sorguyu parantez içine almak faydalı olacaktır.
Burada her bir ifade için dvdrental veritabanı üzerinden örnekle anlatmaya çalışalım. Birinci veri kümesi oyuncu(actor) tablosundaki firstname||' '||lastname ifadesiyle elde ettiğimiz oyuncu isism listesidir. İkinci veri kümesi ise kullanıcılar(customer) veri kümesindeki firstname||' '||lastname ifadesiyle elde ettiğimiz kullanıcı isim listesidir. Örneğin hem oyuncu hemde kullanıcı olanları getirin dediğimizde intersect kullanmamız gerekiyor.
1. UNION
Kullanıcılar ile oyuncuların isimlerini tekrar etmeyecek şekilde getirmek için union kullanmamız gerekiyor.
select first_name || ' '||last_name as isim_listesi from actor
union
select first_name || ' '||last_name as isim_listesi from customer
2. UNİON ALL
Kullanıcılar ile oyuncuların isimlerini tekrarlı olacak şekilde getirmek için union all kullanmamız gerekiyor.
select first_name || ' '||last_name as isim_listesi from actor
union all
select first_name || ' '||last_name as isim_listesi from customer
3. INTERSECT
Hem kullanıcı olan hem de oyuncu olanların isim listesi için intersect kullanmalıyız.
select first_name || ' '||last_name as isim_listesi from actor
intersect
select first_name || ' '||last_name as isim_listesi from customer
4. EXCEPT
Burada ilk verilen veri kümesinde olan fakat ikinci veri kümesinde olmayan veriler için except kullanmamız gerekiyor. Örneğin sadece oyuncu olanlar için oyuncu tablosu ilk sırada kullanıcı tablosu ikici sırada verilmesi gerekir.
select first_name || ' '||last_name as isim_listesi from actor
except
select first_name || ' '||last_name as isim_listesi from customer
Sadece kullanıcı olanlar için;
select first_name || ' '||last_name as isim_listesi from customer
except
select first_name || ' '||last_name as isim_listesi from actor
Hiç yorum yok:
Yorum Gönder