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.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.Tabela pochodna pozwala najpierw przygotować dane, a dopiero potem dalej je przetwarzać. Najczęściej używamy jej, gdy chcemy:
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