16551 skanuj0316 (2)

16551 skanuj0316 (2)



Rozdział 11. ♦ Więcej o SQL 331

w sekcji „Agregacja danych”. Wykorzystajmy podzapytanie proste do stwierdzenia, jaki jest identyfikator towaru, na który złożone zostało zamówienie o najniższej wartości. Wykonamy w tym celu instrukcję:

SELECT Towarld FROM Zamówienia WHERE Wartość =

(SELECT Min(Wartość) FROM Zamówienia);

Efekt działania takiej instrukcji jest widoczny na rysunku 11.23. Działanie jest następujące: najpierw wykonywane jest zapytanie:

SELECT Min(Wartosc) FROM Zamówienia

a jego wynik, wartość 2,28, jest wstawiany do warunku klauzuli WHERE. Następnie wykonywane jest zapytanie zewnętrzne, które tym samym będzie miało postać:

SELECT Towarld FROM Zamówienia WHERE Wartość - 2.28

Rysunek 11.23.    mysq1>    SELECT Towarld

Wykorzystanie    ->    FROM Zamówienia

...    ->    WHERE Wartość =

podzapytama prostego    _>    (select Min (Wartość) FROM Zamówienia);

I Towarld I lrowin set CO.00 sec)

Ostatecznie wynikiem jest tabela zawierająca identyfikator towaru o wartości 4.

Gdybyśmy chcieli dodatkowo otrzymać również nazwę towaru, na który zostało złożone zamówienie o najniższej wartości, musielibyśmy dokonać złączenia tabel Zamówi eni a i Towary. Podzapytanie musiałoby być w takim wypadku jednym z elementów warunku złożonego w klauzuli WHERE. Instrukcja realizująca tak postawione zadanie będzie miała następującą postać:

SELECT Towarld. Nazwa FROM Zamówienia. Towary WHERE Wartość =

(SELECT Min(Wartosc) FROM Zamówienia)

AND Towary.Id - Zamówienia.Towarld:

Efekt jej działania został przedstawiony na rysunku 11.24.

Rysunek 11.24.

Podzapytanie jako element warunku złożonego w klauzuli WHERE


mysq1> SELECT Towarld, Nazwa -> FROM Zamówienia, Towary -> WHERE wartość =

-> (SELECT MinCWartosc) FROM Zamówienia) -> AND Towary.Id = Zamówienia.Towarld;

I Towarld 1 Nazwa    |

I    4 | Płaskowniki |


Wyszukiwarka

Podobne podstrony:
skanuj0297 (3) Rozdział 11. ♦ Więcej o SQL 311 Rozdział 11. ♦ Więcej o SQL 311 mysql> select tytu
skanuj0299 (2) Rozdział 11. ♦ Więcej o SQL 313 Rozdział 11. ♦ Więcej o SQL 313 mysql> SELECT tytu
skanuj0303 (2) Rozdział 11. ♦ Więcej o SQL 317 Której funkcji należy użyć, aby dowiedzieć się, jaka
skanuj0305 (3) Rozdział 11. ♦ Więcej o SQL 319 SELECT Klientld. MIN(Wartosc) AS MIN. MAX(Wartosc) AS
skanuj0310 (2) Rozdział 11. ♦ Więcej o SQL 325 W przypadku już istniejącej tabeli jej typ może zosta
skanuj0314 (2) Rozdział 11. ♦ Więcej o SQL 329 Korzystanie z kluczy obcych wiąże się niestety z kilk
skanuj0318 (2) Rozdział 11. ♦ Więcej o SQL 333

więcej podobnych podstron