Menu

12 Eylül 2010 Pazar

UNION, UNION ALL, INTERSECT, MINUS

UNION            : Iki SELECT sorgusunun birlestirilmesinde kullanilir. Kayitlari siralanmis bir sekilde listeler.
UNION ALL   : Iki SELECT sorgusunun birlestirilmesinde kullanilir. UNION`da farkli olarak, iki sorgudan   donen butun kayitlari verir. Ayni kayitlar varsa tekrarlanir.
INTERSECT   : Iki SELECT sorgusunun birlesmesinde, kesisen degerleri dondurur. Ayni degerler tekrarlanmaz ve siralama olur.
MINUS            : Iki SELECT sorgusundan yanliz birinde olan kayitlari dondurur. Ayni degerler tekrarlanmaz ve siralama vardir.

NOT : Yukaridaki operatorlari kullanirken dikkat etmemiz gereken sorgudan dondurmesini istedigimiz sutunlar, her iki tablodada ayni type`de olmalidir.
Ornek :
Simdi Yukaridaki operatorlari kullanmak icin 2 tane tablo yaratalim ve bu operatorlari kullanalim.

A tablosu 
Name                                Type
ID                                      Number
Name                                 VARCHAR2(20)
Surname                             VARCHAR2(20)

B tablosu
Name                                Type
Name                                 VARCHAR2(20)
Surname                             VARCHAR2(20)


select  *  from a

COLUMN1                NAME                 SURNAME             
---------------------- -------------------- --------------------
1                      ertugrul             aslan               
2                      selcuk               kadir               
3                      bilge                turk                

3 rows selected


select  *  from b

NAME                 SURNAME             
-------------------- --------------------
ertugrul             aslan               
selcuk               kadir               
mustafa              duran               
hakan                aslan               

4 rows selected

Simdi yukaridaki operatorlari kullanmaya baslayalim..
  1. SELECT name, surname FROM A
          UNION SELECT name, surname FROM B
NAME                 SURNAME             
-------------------- --------------------
bilge                turk                
ertugrul             aslan               
hakan                aslan               
mustafa              duran               
selcuk               kadir               

5 rows selected


  1. SELECT name, surname FROM A
          UNION ALL SELECT name, surname FROM B
NAME                 SURNAME             
-------------------- --------------------
ertugrul             aslan               
selcuk               kadir               
bilge                turk                
ertugrul             aslan               
selcuk               kadir               
mustafa              duran               
hakan                aslan             

7 rows selected

  1. SELECT name, surname FROM A
         INTERSECT SELECT name, surname FROM B
NAME                 SURNAME            
-------------------- --------------------
ertugrul             aslan              
selcuk               kadir              

2 rows selected


  1. SELECT name, surname FROM A
          MINUS SELECT name, surname FROM B
NAME                 SURNAME            
-------------------- --------------------
bilge                turk               

1 rows selected


SELECT name, surname FROM B
      MINUS SELECT name, surname FROM A

NAME                 SURNAME            
-------------------- --------------------
hakan                aslan              
mustafa              duran              

2 rows selected

MINUS kullanirken kayitlar tekrarlanmaz ve siralama olur. Burada bir seye dikkat etmemiz gerekiyor. Mesala A tablosunda bilge turk, B tablosunda mustafa duran kayitlari, once A`yi kullandigimizda bilge turk, veriyor. Cunku diger tablodan cikariyor. Once B`yi kullandigimizda sonuc farkli oldugu yukarida gorulmektedir.

Hiç yorum yok:

Yorum Gönder