Adam Karcz

Adam Karcz Student,
Politechnika
Warszawska

Temat: sql - zagnieżdżone SELECT-y

Mam problem, a mianowicie: czy mógłby mi ktoś powiedzieć skąd się bierze i co robi komenda AS Prod? Orientuję się, że jest to alias ale dlaczego bez tego kod nie działa,?
Podaję przykładowy kod:
SELECT DISTINCT PC.model, maker
FROM PC, (SELECT maker, model
FROM Product
) AS Prod

konto usunięte

Temat: sql - zagnieżdżone SELECT-y

Adam Karcz:
Mam problem, a mianowicie: czy mógłby mi ktoś powiedzieć skąd się bierze i co robi komenda AS Prod? Orientuję się, że jest to alias ale dlaczego bez tego kod nie działa,?
Podaję przykładowy kod:
SELECT DISTINCT PC.model, maker
FROM PC, (SELECT maker, model
FROM Product
) AS Prod

Wrzuć w google "correlation names" to ci się rozjaśni :)

konto usunięte

Temat: sql - zagnieżdżone SELECT-y

Adam Karcz:
Mam problem, a mianowicie: czy mógłby mi ktoś powiedzieć skąd się bierze i co robi komenda AS Prod? Orientuję się, że jest to alias ale dlaczego bez tego kod nie działa,?
Podaję przykładowy kod:
SELECT DISTINCT PC.model, maker
FROM PC, (SELECT maker, model
FROM Product
) AS Prod
A co znaczy "nie działa"?

Temat: sql - zagnieżdżone SELECT-y

w tabeli PC i Produkt masz kolumne o takiej samej nazwie - model. Musisz aliasem podpowiedzieć, z której tabeli ma wybrać interesujące Cię dane :)
Marcin Mackiewicz

Marcin Mackiewicz Programista JAVA, RS
Adware Polska

Temat: sql - zagnieżdżone SELECT-y

Wynika to z założenia samego języka SQL.
Każda komórka z każdej kolumny pochodzi z jakiegoś źródła danych które musi być zdefiniowane. Planer engine danej bazy musi wiedzieć z którego źródła danych pochodzi jaka kolumna w celu podliczenia kosztu dostępu do danych i wyboru najbardziej optymalnego działania.

W twoim zapytaniu masz zdefiniowane trzy źródła danych:
1. Tabela o nazwie PC
2. (select maker, model ... ) as Prod
a) Tabela o nazwie Product

Podzapytanie korzysta ze źródła Product i wykona się poprawnie. Z racji, że podzapytanie jest częścią innego zapytania planer z wyniku podzapytania (select maker...) stworzy nowe wirtualne źródło które można użyć w reszcie zapytania głównego.

Z założenia, że każda kolumna misi pochodzić ze zdefiniowanego źródła, trzeba użyć alias aby nazwać wirtualnie stworzone źródło (czyli tak naprawdę mieć możliwość użycia wyniku podzapytania w całości oraz podliczać koszt wykonania całości by dane zwrócić w możliwie najbardziej optymalny sposób).

... Nie pamiętam czy tak dokładnie to szło ... Polecam "Zaawansowane metody programowania w SQL"

Następna dyskusja:

[PL/SQL] SELECT prawie wszy...




Wyślij zaproszenie do