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

Podzapytanie w klauzuli FROM

Kolejny korytarz prowadzi nas do tabel pochodnych. Tym razem podzapytanie nie wyląduje w

WHERE
, lecz w klauzuli FROM - i posłuży jako gotowy materiał, z którego zapytanie zewnętrzne będzie czerpać dalej.

Tabela pochodna (podzapytanie w FROM)

Podzapytanie wstawione do

FROM
działa jak tymczasowa tabela - nazywamy ją tabelą pochodną (derived table). W MySQL musi ona otrzymać alias:

1SELECT AVG(liczba) AS srednia_ksiazek
2FROM (
3  SELECT autor_id, COUNT(*) AS liczba
4  FROM ksiazki
5  GROUP BY autor_id
6) AS zestawienie;

Wewnętrzne zapytanie liczy książki każdego autora. Zewnętrzne traktuje ten wynik jak zwykłą tabelę (

zestawienie
) i liczy z niej średnią. Bez aliasu
AS zestawienie
Biblioteka zgłosi błąd.

Po co tabela pochodna?

Tabela pochodna pozwala najpierw przygotować dane, a dopiero potem dalej je przetwarzać. Najczęściej używamy jej, gdy chcemy:

  • policzyć agregat z innego agregatu (np. średnią z liczników),
  • odfiltrować wynik grupowania, a potem dalej go obrabiać,
  • nadać tymczasowe nazwy kolumnom, do których odwoła się zapytanie zewnętrzne.

Pamiętaj o aliasie

W MySQL każda tabela pochodna musi mieć alias - nawet jeśli zapytanie zewnętrzne z niego nie korzysta. Zapomniany alias to najczęstszy błąd w tym korytarzu. Nadawaj go zawsze, np.

AS zestawienie
albo
AS t
.

@name

Przejdź do CodeWorlds