SQL - BİRLİKLER MADDESİ
SQL UNION yan tümcesi / operatörü, iki veya daha fazla SELECT ifadesinin sonuçlarını, yinelenen satırlar döndürmeden birleştirmek için kullanılır.
Bu UNION yan tümcesini kullanmak için, her SELECT deyiminin sahip olması gerekir
- Aynı sayıda sütun seçildi
- Aynı sayıda sütun ifadesi
- Aynı veri türü ve
- Onları aynı sıraya koyun
Ancak aynı uzunlukta olmaları gerekmez.
Sözdizimi
A'nın temel sözdizimi UNION fıkra aşağıdaki gibidir -
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
UNION
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
Burada verilen koşul, ihtiyacınıza göre verilen herhangi bir ifade olabilir.
Misal
Aşağıdaki iki tabloyu düşünün.
Table 1 - MÜŞTERİLER Tablosu aşağıdaki gibidir.
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Table 2 - SİPARİŞLER Tablosu aşağıdaki gibidir.
+-----+---------------------+-------------+--------+
|OID | DATE | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 | 3 | 3000 |
| 100 | 2009-10-08 00:00:00 | 3 | 1500 |
| 101 | 2009-11-20 00:00:00 | 2 | 1560 |
| 103 | 2008-05-20 00:00:00 | 4 | 2060 |
+-----+---------------------+-------------+--------+
Şimdi bu iki tabloyu SELECT deyimimizde aşağıdaki gibi birleştirelim -
SQL> SELECT ID, NAME, AMOUNT, DATE
FROM CUSTOMERS
LEFT JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
UNION
SELECT ID, NAME, AMOUNT, DATE
FROM CUSTOMERS
RIGHT JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Bu, aşağıdaki sonucu verecektir -
+------+----------+--------+---------------------+
| ID | NAME | AMOUNT | DATE |
+------+----------+--------+---------------------+
| 1 | Ramesh | NULL | NULL |
| 2 | Khilan | 1560 | 2009-11-20 00:00:00 |
| 3 | kaushik | 3000 | 2009-10-08 00:00:00 |
| 3 | kaushik | 1500 | 2009-10-08 00:00:00 |
| 4 | Chaitali | 2060 | 2008-05-20 00:00:00 |
| 5 | Hardik | NULL | NULL |
| 6 | Komal | NULL | NULL |
| 7 | Muffy | NULL | NULL |
+------+----------+--------+---------------------+
BİRLİK TÜM Fıkra
UNION ALL operatörü, yinelenen satırlar dahil olmak üzere iki SELECT ifadesinin sonuçlarını birleştirmek için kullanılır.
UNION yan tümcesi için geçerli olan aynı kurallar UNION ALL operatörü için de geçerli olacaktır.
Sözdizimi
Temel sözdizimi UNION ALL Şöyleki.
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
UNION ALL
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
Burada verilen koşul, ihtiyacınıza göre verilen herhangi bir ifade olabilir.
Misal
Aşağıdaki iki tabloyu düşünün,
Table 1 - MÜŞTERİLER Tablosu aşağıdaki gibidir.
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Table 2 - SİPARİŞLER tablosu aşağıdaki gibidir.
+-----+---------------------+-------------+--------+
|OID | DATE | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 | 3 | 3000 |
| 100 | 2009-10-08 00:00:00 | 3 | 1500 |
| 101 | 2009-11-20 00:00:00 | 2 | 1560 |
| 103 | 2008-05-20 00:00:00 | 4 | 2060 |
+-----+---------------------+-------------+--------+
Şimdi bu iki tabloyu SELECT deyimimizde aşağıdaki gibi birleştirelim -
SQL> SELECT ID, NAME, AMOUNT, DATE
FROM CUSTOMERS
LEFT JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
UNION ALL
SELECT ID, NAME, AMOUNT, DATE
FROM CUSTOMERS
RIGHT JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Bu, aşağıdaki sonucu verecektir -
+------+----------+--------+---------------------+
| ID | NAME | AMOUNT | DATE |
+------+----------+--------+---------------------+
| 1 | Ramesh | NULL | NULL |
| 2 | Khilan | 1560 | 2009-11-20 00:00:00 |
| 3 | kaushik | 3000 | 2009-10-08 00:00:00 |
| 3 | kaushik | 1500 | 2009-10-08 00:00:00 |
| 4 | Chaitali | 2060 | 2008-05-20 00:00:00 |
| 5 | Hardik | NULL | NULL |
| 6 | Komal | NULL | NULL |
| 7 | Muffy | NULL | NULL |
| 3 | kaushik | 3000 | 2009-10-08 00:00:00 |
| 3 | kaushik | 1500 | 2009-10-08 00:00:00 |
| 2 | Khilan | 1560 | 2009-11-20 00:00:00 |
| 4 | Chaitali | 2060 | 2008-05-20 00:00:00 |
+------+----------+--------+---------------------+
UNION cümlesine benzeyen diğer iki cümle (yani operatörler) vardır.
SQL INTERSECT İfadesi - Bu, iki SELECT deyimini birleştirmek için kullanılır, ancak yalnızca ikinci SELECT deyimindeki bir satırla aynı olan ilk SELECT deyiminden satırları döndürür.
SQL EXCEPT Clause - Bu, iki SELECT deyimini birleştirir ve ilk SELECT deyiminden ikinci SELECT deyimi tarafından döndürülmeyen satırları döndürür.