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).

Fot: Sam Greenhalgh, CC BY 2.0.

Fot: Sam Greenhalgh, CC BY 2.0.

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:

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.

, , , , , ,