Professional Documents
Culture Documents
Wąs 2021
Sposoby łączenia tabel w klauzuli FROM – dotyczyły łączenia zbiorów w sposób poziomy. Określane
były typy złączeń (m.in. INNER, OUTER JOIN) oraz warunki dopasowania rekordów – wyszczególnione
przed operatorem ON. W wyniku otrzymywaliśmy zbiór elementów, opisywany za pomocą
wszystkich kolumn (atrybutów) łączonych tabel. Dlatego nazywamy to połączenie jako poziome.
Drugą grupą operacji na zbiorach, są operacje pionowe, czyli Union , EXCEPT oraz INTERSECT
(najtańszy produkt nie może mieć wartości nieokreślonej lub zero) a w osobnej kolumnie zamieść
informacje czy produkt jest najtańszy czy najdroższy
union
Szukam produktów o nazwie zaczynającej się na dowolną literę, a druga litera zaczyna się
od c do p i trzecia litera nie jest g oraz cena produktu zawiera się w przedziale 10-100 bez wartości
10 i 90
select productname, unitprice from products where productname like '___%' and
(substring(productname,2,1)>'c' and substring (productname,2,1)<'p') or
(substring(productname,2,1)>'C' and substring (productname,2,1)<'P') and
substring(productname,3,1)<>'g' and unitprice between '10' and'100' and unitprice <> '90';
Bazy Danych Ł. Wąs 2021
Zadanie do wykonania
znajdź najtańszy i najdroższy produkt dostarczony przez dostawce którego nazwa zaczyna sie na literę
od a-g podaj z jakiej kategorii on pochodzi oraz w dodatkowej kolumnie czy jest to najdroższy czy
najtańszy produkt oraz nazwę kategorii
Substring
Funkcja SUBSTRING() daje nam możliwość wycięcia fragmentu ciągu znaków z rekordu.
Przykłady
FROM `nazwa_tabeli`
FROM pracownicy
Klauzula having
Jest to trzeci i ostatni krok, w którym możemy filtrować elementy zbioru wynikowego. Różni się
zasadniczo od poznanych do tej pory, związanych z selekcją wierszy we FROM (gdzie filtrem są
warunki złączeń z innymi tabelami) oraz WHERE.
(5) SELECT
(1) FROM
(2) WHERE
(3) GROUP BY
(4) HAVING
(6) ORDER BY
Operacja grupowania opisana w artykule na temat GROUP BY, wprowadza pewne ograniczenia. W
każdym kolejnym kroku po GROUP BY, odwoływać się możemy bezpośrednio tylko do atrybutów
(kolumn) sekcji grupującej. Do pozostałych kolumn (sekcji danych surowych) tylko za pośrednictwem
funkcji agregujących.
HAVING jest kolejnym krokiem po GROUP BY – działamy zatem na całych grupach wierszy. Jest to tak
zwana selekcja pozioma grup wierszy. Warunki określone w WHERE, traktujemy jako selekcję
poziomą pojedynczych rekordów.
1. zapytanie zwracajace 2 kolumny ; kraj oraz ilosc zamowien z niego realizowanych, jedynie
kraje o najwiekszej liczbie zamowien
from dbo.Customers
from dbo.Customers
GROUP BY City
from dbo.Customers
GROUP BY City
HAVING COUNT(CustomerID)>1
from dbo.Customers
Zadanie do wykonania