Podzapytania: Podzapytania jako źródło danych w SQL cz. III
Do tej pory w poprzednich częściach tego artykułu omawiane były podzapytania, które były wstawiane np. w klauzuli SELECT albo WHERE. Oczywiście to nie wyczerpuje tego tematu, bowiem nasze podzapytanie można również umieścić w klauzuli FROM. Jest nawet do tego stworzone specjalne wyrażenie tabelaryczne – CTE (ang. Common Table Expressions).
Tabela klienci na której uruchomimy przykładowe zapytanie:
| ID | Imie | Nazwisko | Miasto |
| 1 | Jan | Kowalski | Warszawa |
| 2 | Michał | Łagoda | Kraków |
| 3 | Marcin | Kulczyk | Kraków |
| 4 | Radosław | Sikorski | Kraków |
| 5 | Monika | Kopacz | Gdańsk |
| 6 | Piotr | Grabiec | Toruń |
| 7 | Ewa | Pogodna | Bydgoszcz |
| 8 | Sebastian | Szybki | Warszawa |
Ćwiczenie
Przyjrzyjmy się teraz przykładowemu podzapytaniu jako źródło danych:
SELECT * FROM (SELECT Imie, Nazwisko FROM klienci);
Rezultat:
| Imie | Nazwisko |
| Jan | Kowalski |
| Michał | Łagoda |
| Marcin | Kulczyk |
| Radosław | Sikorski |
| Monika | Kopacz |
| Piotr | Grabiec |
| Ewa | Pogodna |
| Sebastian | Szybki |
Nasza kwerenda pobrała wszystkie kolumny (*) z utworzonej za pomocą podzapytania z klauzuli FROM tabeli.
Tego typu techniki przydatne są między innymi, kiedy musimy wykonać jakąś operację na danych z kilku tabel i na dodatek informacje pobrane z każdej tabeli muszą również zostać wcześniej jakoś zmodyfikowane (np. musi zostać obliczona średnia, suma itp.).
Przypuśćmy na przykład, że musimy obliczyć średnią cenę komputerów, drukarek oraz monitorów sprzedawanych w sklepie komputerowym. Dane te są zapisane w trzech różnych tabelach. Zastosujemy więc tutaj podzapytanie które obliczy średnią cenę z tabeli komputery, średnią cenę z tabeli drukarki oraz średnią cenę z tabeli monitory, a następne z tych trzech danych wywołamy zewnętrzne podzapytanie i obliczymy właściwą średnią.
Ten przykład został omówiony w kolejnej części tego artykułu.