Informacje o nowych artykułach oraz akcjach edukacyjnych prosto na Twojej skrzynce e-mail!

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:

IDImieNazwiskoMiasto
1JanKowalskiWarszawa
2MichałŁagodaKraków
3MarcinKulczykKraków
4RadosławSikorskiKraków
5MonikaKopaczGdańsk
6PiotrGrabiecToruń
7EwaPogodnaBydgoszcz
8SebastianSzybkiWarszawa

Ćwiczenie

Przyjrzyjmy się teraz przykładowemu podzapytaniu jako źródło danych:

SELECT * FROM (SELECT Imie, Nazwisko FROM klienci);

Rezultat:

ImieNazwisko
JanKowalski
MichałŁagoda
MarcinKulczyk
RadosławSikorski
MonikaKopacz
PiotrGrabiec
EwaPogodna
SebastianSzybki

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.

Spodobało się?

Jeśli tak, to zarejestruj się do newslettera aby otrzymywać informacje nowych artykułach oraz akcjach edukacyjnych. Gwarantuję 100% satysfakcji i żadnego spamowania!

, , , , , ,

Dodaj komentarz

Odpowiedz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Pin It on Pinterest