poniedziałek, 24 września 2018

SQLite - klauzula UNION


SQLite - klauzula UNION

Klauzula/operator SQLite UNION  służy do łączenia wyników dwóch lub więcej instrukcji SELECT bez zwracania żadnych duplikatów wierszy.
Aby użyć UNION, każdy SELECT musi mieć taką samą liczbę wybranych kolumn, taką samą liczbę wyrażeń kolumn, ten sam typ danych i mieć je w tej samej kolejności, ale nie muszą one być tej samej długości.
Składnia
Poniżej znajduje się podstawowa składnia UNION .
SELECT kolumna1 [, kolumna2 ]
FROM tabela1 [, tabela2 ]
[WHERE warunek]

UNION

SELECT kolumna 1 [,kolumna 2 ]
FROM tabela 1 [,tabela 2 ]
[WHERE warunek]
Tutaj podanym warunkiem może być dowolne wyrażenie na podstawie twojego wymagania.
Przykład
Rozważ następujące dwie tabele, (a) tabela PRACOWNIK w następujący sposób:
sqlite> select * from pracownik;
id          nazwisko    wiek        adres       pensja
----------  ----------  ----------  ----------  ----------
1           Adam        32          Warszawa    2000.0
2           Piotr       25          Piaseczno   1500.0
3           Tomasz      23          Grodzisk    2000.0
4           Marek       25          Płock       6500.0
5           Dawid       27          Halinów     8500.0
6           Katarzyna   22          Marki       4500.0
7           Jan         24          Kraków      4500.0
8           Paweł       24          Zielonka    3500.0
9           Jan         44          Kobyłka     5000.0
10          Jan         45          Nieporęt    5000.0
(b) Kolejna tabela to DZIAL w następujący sposób:
id          dzial       prac_id
----------  ----------  ----------
1           IT          1
2           Logistyka   2
3           Finanse     7
4           Logistyka   3
5           Finanse     4
6           Logistyka   5
7           Finanse     6
8           Logistyka   10
9           Logistyka   8
10          Logistyka   9
Teraz połączmy te dwie tabele za pomocą instrukcji SELECT wraz z klauzulą ​​UNION w następujący sposób:
sqlite>  SELECT prac_id, nazwisko, dzial FROM pracownik INNER JOIN dzial
         ON pracownik.id = dzial.prac_id        
         UNION        
         SELECT prac_id, nazwisko, dzial FROM pracownik LEFT OUTER JOIN dzial
         ON pracownik.id = dzial.prac_id;
Spowoduje to uzyskanie następującego wyniku.
prac_id     nazwisko    dzial
----------  ----------  ----------
1           Adam        IT
2           Piotr       Logistyka
3           Tomasz      Logistyka
4           Marek       Finanse
5           Dawid       Logistyka
6           Katarzyna   Finanse
7           Jan         Finanse
8           Paweł       Logistyka
9           Jan         Logistyka
10          Jan         Logistyka

Klauzula UNION ALL

Operator UNION ALL służy do łączenia wyników dwóch instrukcji SELECT, w tym duplikatów wierszy.
Te same zasady, które mają zastosowanie do UNION, dotyczą również operatora UNION ALL.
Składnia
Poniżej znajduje się podstawowa składnia UNION ALL.
SELECT kolumna1 [, kolumna2 ]
FROM tabela1 [, tabela2 ]
[WHERE warunek]

UNION ALL

SELECT kolumna1 [, kolumna2 ]
FROM tabela1 [, tabela2 ]
[WHERE warunek]
Tutaj podanym warunkiem może być dowolne wyrażenie na podstawie twojego wymagania.
Przykład
Teraz, dołączmy do wyżej wymienionych dwóch tabel w naszej instrukcji SELECT w następujący sposób -
sqlite>  SELECT prac_id, nazwisko, dzial FROM pracownik INNER JOIN dzial
         ON pracownik.id = dzial.prac_id
                 
         UNION ALL

         SELECT prac_id, nazwisko, dzial FROM pracownik LEFT OUTER JOIN dzial
         ON pracownik.id = dzial.prac_id;
Spowoduje to uzyskanie następującego wyniku.
prac_id     nazwisko    dzial
----------  ----------  ----------
1           Adam        IT
2           Piotr       Logistyka
7           Jan         Finanse
3           Tomasz      Logistyka
4           Marek       Finanse
5           Dawid       Logistyka
6           Katarzyna   Finanse
10          Jan         Logistyka
8           Paweł       Logistyka
9           Jan         Logistyka
1           Adam        IT
2           Piotr       Logistyka
3           Tomasz      Logistyka
4           Marek       Finanse
5           Dawid       Logistyka
6           Katarzyna   Finanse
7           Jan         Finanse
8           Paweł       Logistyka
9           Jan         Logistyka
10          Jan         Logistyka


Brak komentarzy:

Prześlij komentarz