Teradata - SET Operatörleri

SET operatörleri, birden çok SELECT ifadesinden gelen sonuçları birleştirir. Bu, Joins'e benzer görünebilir, ancak birleşimler birden çok tablodan sütunları birleştirirken, SET operatörleri birden çok satırdaki satırları birleştirir.

Kurallar

  • Her bir SELECT ifadesindeki sütun sayısı aynı olmalıdır.

  • Her SELECT'ten gelen veri türleri uyumlu olmalıdır.

  • ORDER BY yalnızca son SELECT deyimine dahil edilmelidir.

BİRLİK

UNION deyimi, birden çok SELECT deyiminden gelen sonuçları birleştirmek için kullanılır. Yinelemeleri yok sayar.

Sözdizimi

UNION bildiriminin temel sözdizimi aşağıdadır.

SELECT col1, col2, col3… 
FROM  
<table 1> 
[WHERE condition] 
UNION  

SELECT col1, col2, col3… 
FROM  
<table 2> 
[WHERE condition];

Misal

Aşağıdaki çalışan tablosu ve maaş tablosunu düşünün.

Çalışan Hayır İsim Soyadı JoinedDate Bölüm No Doğum günü
101 Mike James 27.3.2005 1 1/5/1980
102 Robert Williams 25.4.2007 2 3/5/1983
103 Peter Paul 21.3.2007 2 4/1/1983
104 Alex Stuart 2/1/2008 2 11/6/1984
105 Robert James 1/4/2008 3 12/1/1984
Çalışan Hayır Brüt Kesinti Net ödeme
101 40.000 4.000 36.000
102 80.000 6.000 74.000
103 90.000 7.000 83.000
104 75.000 5.000 70.000

Aşağıdaki UNION sorgusu, Employee ve Maaş tablosundaki EmployeeNo değerini birleştirir.

SELECT EmployeeNo 
FROM  
Employee 
UNION 

SELECT EmployeeNo 
FROM  
Salary;

Sorgu yürütüldüğünde aşağıdaki çıktıyı üretir.

EmployeeNo 
----------- 
   101 
   102 
   103 
   104 
   105

BİRLİĞİ TÜMÜ

UNION ALL ifadesi UNION'a benzer, yinelenen satırlar dahil olmak üzere birden çok tablodan sonuçları birleştirir.

Sözdizimi

UNION ALL ifadesinin temel sözdizimi aşağıdadır.

SELECT col1, col2, col3… 
FROM  
<table 1> 
[WHERE condition] 
UNION ALL 

SELECT col1, col2, col3…
FROM  
<table 2> 
[WHERE condition];

Misal

Aşağıda UNION ALL bildirisine bir örnek verilmiştir.

SELECT EmployeeNo 
FROM  
Employee 
UNION ALL 

SELECT EmployeeNo 
FROM  
Salary;

Yukarıdaki sorgu yürütüldüğünde aşağıdaki çıktıyı üretir. Yinelenenleri de döndürdüğünü görebilirsiniz.

EmployeeNo 
----------- 
    101 
    104 
    102 
    105 
    103 
    101 
    104 
    102 
    103

INTERSECT

INTERSECT komutu, birden çok SELECT deyiminden gelen sonuçları birleştirmek için de kullanılır. İkinci SELECT deyiminde karşılık gelen eşleşmeye sahip olan ilk SELECT deyiminden satırları döndürür. Başka bir deyişle, her iki SELECT deyiminde bulunan satırları döndürür.

Sözdizimi

INTERSECT ifadesinin temel sözdizimi aşağıdadır.

SELECT col1, col2, col3… 
FROM  
<table 1>
[WHERE condition] 
INTERSECT 

SELECT col1, col2, col3… 
FROM  
<table 2> 
[WHERE condition];

Misal

Aşağıda INTERSECT ifadesine bir örnek verilmiştir. Her iki tabloda da bulunan EmployeeNo değerlerini döndürür.

SELECT EmployeeNo 
FROM  
Employee 
INTERSECT 

SELECT EmployeeNo 
FROM  
Salary;

Yukarıdaki sorgu yürütüldüğünde aşağıdaki kayıtları döndürür. EmployeeNo 105, MAAŞ tablosunda bulunmadığı için hariç tutulmuştur.

EmployeeNo 
----------- 
   101 
   104 
   102 
   103

EKSİ / HARİÇ

MINUS / EXCEPT komutları, birden çok tablodan satırları birleştirir ve ilk SELECT'te olan ancak ikinci SELECT'te olmayan satırları döndürür. İkisi de aynı sonuçları verir.

Sözdizimi

MINUS ifadesinin temel sözdizimi aşağıdadır.

SELECT col1, col2, col3… 
FROM  
<table 1> 
[WHERE condition] 
MINUS 

SELECT col1, col2, col3… 
FROM  
<table 2> 
[WHERE condition];

Misal

Aşağıda bir MINUS ifadesi örneği verilmiştir.

SELECT EmployeeNo 
FROM  
Employee 
MINUS 

SELECT EmployeeNo 
FROM  
Salary;

Bu sorgu yürütüldüğünde aşağıdaki kaydı döndürür.

EmployeeNo 
----------- 
   105