ullman150 (2)

ullman150 (2)



»V' tym przypadku obowiązują takie same założenia jak w poprzednim ćwiczeniu, edyna różnica polega na tym, że zamiast iloczynu kartezjańskiego występuje tutaj )perator złączenia. Należy podać postać zapytań $QL. które wyczerpują wszystkie nożliwości zawarte w tej postaci ogólnej zapylania z algebry relaeji.

5.3. Podzapytania

W bieżącym podrozdziale poznamy bardziej zaawansowany sposób wy-ażania warunków w klauzuli WHERE. W warunkach opisywanych poprzednio występowały wartości skalarne (tzn. wartości o typach prostych, takich jak całkowite, rzeczywiste, teksty) lub wyrażenia, które miały wartość skalarną, reraz z kolei przedstawimy wyrażenia, w których mogą występować porów-lania dotyczące całych krotek, a nawet całych relacji. Najpierw poznamy ;posób korzystania z pod zapytań w wyrażeniach. Podzapytania jest takim wyrażeniem, którego wartością jest relacja. Na przykład wyrażenie typu se-ect-from-where jest podzapytanicm. Zanim dowiemy się, jak tworzyć war-ość relacji, opowiemy o operatorach, które w SQL umożliwiają porównywane krotek i relacji w klauzuli WHERE.

5.3.1. Podzapytania, które umożliwiają obliczenie wartości skalarnych

W wyniku przetworzenia wyrażenia select-from-whcrc powstają relacje > schematach zawierających dowolnie dużo atrybutów i dowolnie dużo kro-ek. Często jednak jest interesująca wartość tylko jednego atrybutu. Ponadto :zęsto dane dotyczące klucza relacji pozwalają domyśleć się, że dany atrybut noże mieć tylko jedną wartość.

Jeśli tak jest, to można wyrażenie sclcct-from-whcrc ująć w nawiasy traktować tak samo jak stałą. Takie podzapytanie może wystąpić w każdym contekście, w którym w klauzuli WHERE może wystąpić stała lub atrybut rc-jrczentujący składową krotki. Możemy na przykład porównać wynik takiego >odzapytania ze stałą lub atrybutem.

*RZYKŁAD 5.17

>rzypomnijmy tutaj przykład 5.10, w którym pytaliśmy o producenta Gwiezdnych Wojen. To zapytanie dotyczy dwóch relacji:

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

cilmDyr (nazwisko, adres, cert = , c.enaSieci)

rylko pierwsza z tych relacji zaw iera tytuły filmów, a tylko druga z nich do-itarcza danych o nazwiskach producentów. Dane są powiązane przez numery certyfikatów, które w sposób jednoznaczny identyfikują producentów. W tamtym przykładzie utworzyliśmy następujące zapytanie:

SELECT nazwisko

PROM Film, FilmDyr

WHERE tytuł = 'Gwiezdne Wojny' AND producentC= = cert#

Na to zapytanie można spojrzeć trochę inaczej. Relacja Film jest tu potrzebna tytko po to. by odnaleźć numer certyfikatu producenta Gwiezdnych Wojen. Jeśli ten numer jest już znany, to wystarczy przeszukać relację FilmDyr, aby otrzymać nazwisko osoby o danym numerze certyfikatu. Pierwsze zadanie, polegające na odnalezieniu numeru certyfikatu, można zapisać jako podzapytanic, w jego wy niku powinna powstać dokładnie jedna wartość, która zostanie użyta w zapytaniu „głównym”, którego wynik będzie dokładnie taki sam jak zapytania przytoczonego z przykładu 5.10. Nowe podzapytanie zostało przedstawione na rys. 5.4.

1)    SELECT nazwisko

2)    FROM FilmDyr

3)    WHERE cert#

4)    (SELECT producentem

5)    FROM Film

6)    WHERE (tytuł = 'Gwiezdne Wojny'

7)    };

RYSUNEK 5.4

Wyszukiwanie producenta Gwiezdnych Wojen przy użyciu zagnieżdżonego podzapytania

W wierszach od 4) do 6) na rys. 5.4 zapisano pod wyrażenie. To prościut-kie podzapytanie służy' do obliczenia jednoargumentowej relacji z atrybutem producentCtt i można oczekiwać, żc zostanie do niej włączona tylko jedna krotka. Krotka ta przyjmie postać zbliżoną do (12345), tzn. będzie to jedna składowa z. pewną wartością całkowitą, być może 12345 albo jakąś inną, która jest numerem certyfikatu Gcorge’a Lucasa. Jeśli w wyniku podzapytania zapisanego w w ierszach od 4) do 6) powstanie więcej niż jedna krotka albo nie powstanie żadna krotka, to pojawi się błąd wykonania.

Jeśli jednak podzapytanic wykona się zgodnie z oczekiwaniami, to można wykonać zapytanie z wierszy od 1) do 3) z rys. 5.4, zastępując podzapytanie wyliczoną wartością, np. 12345. Główne podzapytanie przybierze zatem postać następującą:

SELECT nazwisko

FROM FilmDyr

WHERE cert? = 12345;

Jego wynikiem pow inno być nazwisko George Lucas.

n


Wyszukiwarka

Podobne podstrony:
ullman150 (2) »V tym przypadku obowiązują takie same założenia jak w poprzednim ćwiczeniu, edyna ró
1.    Kandydatów z Maturą Międzynarodową obowiązują takie same przedmioty egzaminu
skanuj00090 PRZECIWWSKAZANIADOJONOFOREZY: Przeciwwskazania w jonoforezie obowiązują takie same jak w
karta pracy (58) Dorysuj usta na dwóch ostatnich rysunkach. Sprawdź, czy w walizce są takie same rze
Pomyśl 6 latku Rozwiąż działania. Potem odszukaj zbiór, w którym są takie same liczby jak wynik
Decentralizacja i centralizacja Decentralizacja -ma takie same zalety jak delegowanie; odciąża menad
042 3 1* Dorysuj brakujące elementy tak, żeby w każdym rzędzie były takie same znaki, jak te po lewe
27 (612) Zdarzenia losowe są zbiorami, zatem możemy na nich wykonywać takie same działania jak na zb
JUŻ WIEM POTRAFIĘ MOJA RODZINA (11) w doniczkach takie same kwiaty, jak powyżej
ĆWICZENIA REWALIDACYJNE 2 (00) 1. Połącz ze sobą takie same małe i wielkie litery. 2. Połącz małe li
0000031 (15) Użyte indeksy (O, 1, 2) mają takie same znaczenia, jak we wzorze 17.36. zp oznacza tu p
Zaimek teoria str 4 / V 6. Zaimki moh, Ham mają w dopełniaczu, celowniku, narzędniku i miejscow

więcej podobnych podstron