57604 ullman152 (2)

57604 ullman152 (2)



!> JcZYlC BAĆ. LJANTi.il

podzapytania zapisanego w wierszach od 7) do 9) mogłaby być na przykład relacja przedstawiona na rys. 5.6.

lylul

rok

Gwiezdne Wojny

1977

Poszukiwacze zaginionej arki

1981

Ścigany

1993

RYSUNEK 5.6

Pary tytul-rok otrzymane w wyniku zapytania wewnętrznego

Teraz z kolei rozważmy pośrednie podzapytanie, zapisane w wierszach od 4) do 6). Jego wykonanie polega na tym, że zostaje sprawdzana relacja Film w poszukiwaniu krotek tych filmów, które są zapisane w relacji przedstawionej na rys. 5.6. Do wyniku tego podzapytania jest wpisywany numer certyfikatu prezesa, który występuje w znalezionej krotce. A zatem relacja wynikowa tego środkowego podzapytania zawiera numery certyfikatów producentów, którzy wyprodukowali filmy z udziałem Harrisona Forda.

W końcu rozważymy zapytanie ,.główne'’, zawarte w wierszach od 1) do 3). Jego wykonanie polega na sprawdzaniu krotek relacji FilmDyr w poszukiwaniu tych, których składowe cer1.# należą do zbioru utworzonego w wyniku przetworzenia podzapytania środkowego. Dla każdego odnalezionego producenta do wyniku jest dołączane jego nazwisko, a więc w ten sposób powstaje oczekiwany zbiór nazwisk producentów filmówr z udziałem Harrisona Korda.

Może się czasami zdarzyć, że zapytanie zagnieżdżone, które przedstawiono na rys. 5.5, tak jak i wiele zapytań zagnieżdżonych zostanie zapisanych jako pojedyncze zapytanie select-from-wrhere, w którym w klauzuli FROM wymienia się wszystkie trzy przeszukiwane relacje. Wówczas operatory :n zpodzapytań w nowym zapytaniu zostają zastąpione równościami w klauzuli WHERE. Na przykład zapytanie przedstawione na rys. 5.7 daje len sam wynik, co zapytanie zapisane na rys. 5.5. Różnica polega tylko na sposobie traktowania powtarzających sic krotek, np. George’a Lucasa to zagadnienie omówimy szerzej w p. 5.4.1.

SE1ECT nazwisko

FROM FilmDyr, Film, GwiazdyW

WHERE cert# = producentC# AND tytuł = tytułFilmu AMD rok rokFilmu AND nazwiskoGwia2ćy = 'Harrison Ford';

RYSUNEK 5.7

Producenci filmów z Fordem bez zagnieżdżonych podzapytań

5.3.4. Podzapytania skorelowane

Najprostsze podzapytania są wyliczane tylko raz, a ich wyniki są u żyw ne w zapytaniach zapisanych na wyższych poziomach. W bardziej skomp kowanych zapytaniach trzeba podzapytania wykonywać wielokrotnie, za ka dym razem, gdy zmienia się przypisanie wartości wyrażenia w podzapylan: które zależy z kolei od wartości zmiennych w krotkach tworzonych na wnątrz podzapytania. Tego typu podzapytanie nazywamy podzapytanh skorelowanym. Rozważania na ten temat zaczniemy od przykładu.

PRZYKŁAD 5.19

Trzeba znaleźć tytuły, które oznaczają więcej niż jeden film. Rozpocznier od utworzenia zapytania zewnętrznego, które powoduje przeszukanie kroi relacji

Film(tytuł, rok, długość, czyKolor, nazwaStudia, producentC#)

Dysponując pojedynczą krotką w podzapytaniu sprawdzamy, czy istnieje fi! o tym samym tytule, ale późniejszym roku produkcji. Kompletne zapytar zostało przedstawione na rys. 5.8.

1} SEŁECT tytuł

2} FROM Film AS Stary

3)    WHERE rok < ANY

4)    (SELEC? rok

5)    FROM Fi lir.

6)    WHERE tytuł = Stary.tytuł

7)    )

RYSUNEK 5.8

Wyszukiwanie tytułów tych filmów, które występują więcej niż jeden raz

Tak samo jak w przypadku poprzedniego zapytania zagnieżdżonego rc pocznijmy analizę od najbardziej wewnętrznego podzapytania, które zosta zapisane na rys. 5.8 w wierszach od 4) do 6). Jeśli w wierszu 6) wyrażer Stary.tytuł zastąpimy pojedynczym tekstem ' King Kong', to omawia podzapytanie będzie dotyczyło wyszukania roku lub lat produkcji fi In o tytule King Kong. Ale podzapytanie ma troszkę inną postać. Problem pole na tym, że nie wiadomo, o jaki konkretny tytuł chodzi w przypadku wyrażer Stary .tytuł. Jednakże, gdy przeglądamy po kolei krotki relacji fi lir., w' każdej pojedynczej krotce wiadomo, jaka wartość jest przypisywana i wyrażenia Stary, tytuł. I przy ustaleniu tej wartości, przy każdym wybór nowej krotki zapytania zewnętrznego, zapisanego w wierszach od 1) do ' powtarza się wykonanie podzapytania z wierszy od 4) do 6), w którym war


Wyszukiwarka

Podobne podstrony:
ullman160 (2) Teraz już widać, żc w wierszach od 2) do 6) jest tworzony zbiór tych nazw studiów, któ
ullman180 (2) Wiersze od 4) do 6) są odpowiednikiem drugiej, indukcyjnej reguły. Dwa podzadania są p
skanuj0274 (3) 288 PHP i MySQL dla każdego W przypadku próby zapisania w wierszu kolumny większej li
skanuj0274 (3) 288 PHP i MySQL dla każdego W przypadku próby zapisania w wierszu kolumny większej li
skanuj0021 7 d±,Powtórz jeszcze raz Powtarzaj zapisane wyrażenia. W trakcie powtarzania dorysuj dese
16212 ullman068 (2) 142 3. RELACYJNY MODEL DANYCH sy i broń, które pochodzą z pozostałych dwóch nadk
(31.05.2016). Na zapisach wydziałowych, wrześniowych Studenci zapisują się na kurs „Praca dyplomowa
DIAGNOSTYKA POWIĘKSZONY WĘZEŁ BAC ROZPOZNANIE LUB PODEJRZENIE CHŁONIAKA USUNIĘCIE WĘZŁA DO
387 L/Educateur Prolźtabjen Yrnelto nc voil, dit-il, qu’u trnvers lc prisine do son sysleme. Los cum

więcej podobnych podstron