Używamy cookies, żeby zwiększyć Twoje doświadczenia na stronie
CodeWorlds

Labirynt Zapytań

Witaj ponownie, @name! Stoisz u wrót Labiryntu Zapytań - najbardziej zawiłej części Wielkiej Biblioteki. To tutaj przechowuję zwoje, których nie da się odnaleźć jednym prostym spojrzeniem na regał. Czasem, by znaleźć jedną księgę, trzeba najpierw zadać Bibliotece inne pytanie, a dopiero jego odpowiedź wskaże właściwą półkę.

Pytanie wewnątrz pytania

W naszym świecie taki chwyt nazywamy podzapytaniem (subquery). To zwykłe zapytanie SELECT zamknięte w nawiasach okrągłych i umieszczone wewnątrz innego zapytania.

1SELECT tytul
2FROM ksiazki
3WHERE cena > (SELECT AVG(cena) FROM ksiazki);

Najpierw Biblioteka wykonuje podzapytanie wewnętrzne - liczy średnią cenę wszystkich ksiąg. Dopiero potem zapytanie zewnętrzne używa tej liczby, by wybrać księgi droższe od średniej.

Po co schodzić w głąb Labiryntu?

  • aby porównać wiersz z wynikiem obliczenia (np. ze średnią),
  • aby sprawdzić, czy wartość należy do listy zwróconej innym zapytaniem,
  • aby zapytać, czy istnieje powiązany zwój na innym regale,
  • aby połączyć wyniki dwóch poszukiwań w jedną listę.

Co poznasz w tej lokacji

Przejdziemy przez wszystkie korytarze Labiryntu: podzapytania skalarne, operator IN, podzapytania skorelowane, EXISTS / NOT EXISTS, tabele pochodne w klauzuli FROM oraz łączenie zbiorów przez UNION i UNION ALL.

Trzymaj się mocno nici Ariadny - czyli logiki zapytania - a nie zgubisz się w zaułkach. Ruszamy!

@name

Przejdź do CodeWorlds