BLACK WEEKS DO -60%     |        7-24 listopada     |        + dodatkowe -10% dla zamówień od 150 zł

close
Cart icon
User menu icon
User icon
Skontaktuj się z nami:
+48 888-916-333
Lightbulb icon
Jak to działa?
FAQ icon
FAQ
Contact icon
Kontakt
Terms of service icon
Regulamin zakupów
Privacy policy icon
Polityka prywatności
co to są podzapytania w sql

SQL - podzapytania

Podzapytania (znane też jako zapytania zagnieżdżone) często sprawiaja problemy początkującym użytkownikom języka SQL. Dlatego postaramy się opisać ten ważny temat z użyciem prostych i przyjaznych przykładów. Zakładamy, że masz podstawową wiedzę na temat SQL i posiadasz umiejętność pisania zapytań typu SELECT.

do czego służą podzapytania w sql?

Naucz się manipulować danymi za pomocą języka SQL.

Dowiedz się więcej

Czym są podzapytania

Podzapytanie to nic innego jak zapytanie zagnieżdżone w zapytaniu. Spójrz na poniższy przykład:

SELECT 1 + 1 + 1;

Wynik to oczywiście 3 - tego typu zapytanie arytmetyczne to standardowa funkcjonalność języka SQL. To samo możemy osiągnąć za pomocą podzapytań:

SELECT 1 + (SELECT 1 + (SELECT 1));

Rezultaty zwracane są od podzapytań najbardziej zagnieżdżonych, do najbardziej zewnętrznych.

  • Zapytanie najbardziej zagnieżdżone zwraca 1.
  • Ten wynik jest dodawany do kolejnego podzapytania i mamy na tym etapie 2.
  • To z kolei jest dodawane do najbardziej zewnętrznego zapytania (tego poza nawiasami) i mamy w rezultacie wynik 3.

Praktyczny przykład podzapytania

Teraz zajmiemy się bardziej praktycznym przykładem. Mamy tabelę employees:

do czegło służą podzapytania w sql

Wyobraź sobie, że twoim zadaniem jest wyszukanie pracownika, który zarabia najwięcej.

Wersja bez podzapytania

Bez znajomości podzapytań, do rozwiązania problemu doprowadzą dwa osobne zapytania. W pierwszej kolejności wyszukamy najwyższą pensję:

SELECT MAX(salary) FROM employees;

Wynik:

naucz się podzapytań w sql

A teraz wyszukamy konkretnego użytkownika:

SELECT name, surname FROM employees WHERE salary = 1000000;

Wynik wygląda tak:

Zobacz co to podzapytania w sql

Udało nam się osiągnąć pożądany wynik - mamy pracownika, który zarabia najwięcej. Ale wymagało to użycia dwóch osobnych zapytań.

Wersja z użyciem podzapytania

Tak wygląda kod SQL:

SELECT name, surname FROM employees 
WHERE salary = (SELECT MAX(salary) FROM employees);

Wynik jest taki sam:

Zostać mistrzem podzapytań w sql

Udało nam się osiągnać to samo, w bardziej elegancki sposób. Do warunku WHERE dodaliśmy kolejne zapytanie czyli SELECT MAX(salary) FROM employees. Możemy więc powiedzieć, że warunkiem są rekordy spełniające wynik podzapytania. Te rekordy, które mają najwyższą wartośc w kolumnie salary.

Kolejny przykład

Aby przećwiczyć koncepcję podzapytań, pokażemy jeszcze jeden przykład. Tabela jest ta sama. Tym razem jednak, chcemy wyszukać pracowników z najwyższą pensją w danym dziale (kolumna department). Użyjemy następującego zapytania:

SELECT name, surname, department 
FROM employees WHERE id IN(SELECT id FROM employees 
GROUP BY department 
HAVING MAX(salary));

Nasze podzapytanie wyszukuje identyfikatory pracowników, którzy mają najwyższe pensje w danym dziale. Dlatego użyliśmy grupowania oraz funkcji MAX(), aby dla danego działu znaleźć najwyższe wynagrodzenie. Wynik posłużył nam jako kryterium dla głównego zapytania SELECT. Warto zwrócić uwagę na użycie IN - dzięki tej klauzuli wyszukujemy identyfikatory pracowników, zawarte w przedziale zwróconym przez podzapytanie.

A tak wygląda wynik:

name surname MAX(salary)
John Doe 1000000
Mark Rooney 15000
Mell Gray 3000

poznaj podzapytania w sql

Naucz się manipulować danymi za pomocą języka SQL.

Dowiedz się więcej

Podsumowanie

Mamy nadzieję, że po lekturze tego artykułu wiesz już jak używać podzapytań. To bardzo ważna technika, niezwykle pomocna w sytuacji gdy mamy złożone warunki w naszym zapytaniu.