MS Access 2003 Kwerendy Paweł Górczyński
Spis treści Wstęp Tworzenie kwerendy Edycja projektu kwerendy Otwieranie kwerendy Definiowanie warunków Grupowanie Funkcje agregujące Zagnieżdżanie kwerend Kwerenda z parametrem
Wstęp Kwerendy służą do wybierania z tabel informacji spełniających określone warunki Kwerendy mogą wybierać dane bezpośrednio z tabel lub z innych kwerend Każda kwerenda ma nazwę Kwerenda jest tylko zdefiniowanym zapytaniem do bazy danych. Sama nie przechowuje żadnych danych.
Tworzenie kwerend - krok 1 z 6 W oknie projektu bazy danych w widoku obiektów Kwerendy (Query) pokazane są wszystkie kwerendy w bazie danych. Aby utworzyć nową klikamy dwukrotnie Utwórz kwerendę w widoku projektu (Create query in Design view)
Tworzenie kwerend - krok 2 z 6 Automatycznie otwiera się dodatkowe okno Pokaż tabelę (Show Table), w którym wybieramy tabele/kwerendy, z których chcemy wybrać informacje. Po zaznaczeniu tabeli/kwerendy naciskamy guzik Dodaj (Add) - spowoduje to pojawienie się tabeli/kwerendy w oknie w tle. Zamykamy okno. Jeśli pomylimy się lub chcemy usunąć to, co dodaliśmy, można to zrobić później. Tabele/Kwerendy pojawiają się wraz z relacjami zdefiniowanymi w oknie relacji tabel.
Dodawanie tabel/kwerend - krok 3 z 6 Okno pokazywanie tabeli można wywołać w każdej chwili z menu Kwerendy (Query) polecenie Dodaj tabelę (Add table) lub klikając na pasku narzędzi guzik W oknie Pokaż tabelę (Show table) wybieramy tabelę/kwerendę i naciskamy guzik Dodaj (Add) Jeśli chcemy wybrać informacje z dwóch tabel które nie są bezpośrednio połączone relacją, to powinniśmy również dodać tabelę która łączy pozostałe dwie.
Usuwanie tabel/kwerend - krok 4 z 6 Aby usunąć tabelę/kwerendę z okna relacji: Wybieramy ją klikając na pasek tytułowy (w środku tabeli jedno z pól zostanie zaznaczone). Naciskamy klawisz Delete.
Dodawanie/usuwanie pól - krok 5 z 6 Aby dodać pole należy wykonać jedną z opcji Dwukrotnie kliknąć pole w tabeli/kwerendzie w oknie relacji - pole pojawi się w oknie selekcji na dole Przeciągnąć pole z tabeli/kwerendy w oknie relacji do okna selekcji na dole W oknie selekcji na dole wybrać tabelę i pole Aby usunąć pole należy: Skasować (wyczyścić) nazwę pola Zaznaczyć kolumnę, klikając w nagłówku kolumny i nacisnąć klawisz Delete Najprostszy i najszybszy sposób wybrania pola to podwójne kliknięcie na nazwę pola w oknie relacji. Jedno pole może być wybrane wielokrotnie.
Zapisywanie kwerendy - krok 6 z 6 Po wprowadzeniu wszystkich pól wybieramy z menu Plik (File) polecenie Zapisz (Save) lub naciskamy na pasku narzędzi guzik W oknie Zapisz jako (Save As) wpisujemy nazwę kwerendy (proponowana jest Kwerenda1) Naciskamy guzik OK
Edycja projektu kwerendy Klikamy kwerendę, której projekt chcemy zmienić Klikamy guzik Projekt (Design) W następnych krokach postępujemy tak samo jak podczas tworzenia kwerendy.
Otwieranie kwerendy W oknie projektu bazy danych w widoku obiektów Kwerendy (Query) pokazane są wszystkie kwerendy w bazie danych. Aby otworzyć kwerendę, należy ją zaznaczyć i nacisnąć guzik Otwórz (Open) lub kliknąć kwerendę dwukrotnie myszą. Jeśli chcemy szybko zmienić widok projekt na dane lub odwrotnie to można skorzystać z przycisku zmiany widoku
Sortowanie Dane zwracane przez kwerendę można posortować. Sortowanie można ustawić dla wielu kolumn jednocześnie – dane będą wtedy sortowane w takiej kolejności jak ułożone są kolumny, od lewej do prawej strony Domyślnie dane ułożone są wg wartości klucza (alfabetycznie dla wartości tekstowych). Oznacza to, że nowo tworzony rekord, który umownie dopisujemy na końcu tabeli, zapewne nie będzie się tam znajdował jeśli zamkniemy tabelę i otworzymy ponownie. System bazy danych automatycznie zmieni położenie rekordu w tabeli wg wartości klucza.
Definiowanie warunków Kryteria wpisujemy w wierszu Kryteria (Criteria) W kryteriach możemy używać: operatorów porównania: >,<,=,<=,>= sprawdzania istnienia wartości w polu: IS NULL (jest puste) , IS NOT NULL (nie jest puste) Znaku * zastępującego dowolny ciąg znaków Przykład po prawej: warunek >100 powoduje, że zostaną wybrane tylko rekordy, których wartość w polu Ilosc jest większa niż 100
Przykłady definiowania warunków Warunek Opis działania >100 Rekordy, których pole ma wartość większą niż 100 Is Not Null Rekordy, których pole nie jest puste "Ala" Rekordy, których pole jest równe "Ala" "Kow*" Rekordy, których pole jest równe "Kow" i jakikolwiek ciąg znaków np: "Kowalski", "Kowalewski", "Kowal" Znak * zastępuje dowolny ciąg znaków Znak ? zastępuje jeden znak
Warunek logiczny I (AND) Warunki wpisane w tym samym wierszu muszą być spełnione wszystkie naraz, czyli łączy je operator logiczny I (AND) W przykładzie po prawej zapisano warunek, że: pole Ilosc ma być większe niż 100 I pole IDTowaru ma być równe "DELX"
Warunek logiczny LUB (OR) Warunki wpisane w różnych wierszach muszą być spełnione alternatywnie, czyli łączy je operator logiczny LUB (OR) W przykładzie po prawej zapisano warunek, że: pole Ilosc ma być większe niż 1000 LUB pole Ilosc ma być mniejsze niż 20
Warunek logiczny I (AND) dla jednego pola Warunek logiczny I (AND) dla jednego pola można zapisać: W oddzielnych kolumnach dla tego samego pola używając prostych operatorów: >20 <30 W jednej kolumnie używając wyrażeń z operatorami logicznymi >20 AND <30 W przykładzie powyżej obie definicje są równoważne
Lab 7 – Kwerendy Proszę otworzyć bazę lab2 z dysku c:\access Proszę utworzyć kwerendę K_Odbiorcy zwracającą NipOdbiorcy, Nazwę Proszę utworzyć kwerendę K_OdbiorcyMiasta zwracającą NipOdbiorcy, Nazwę, Miasto, Kraj posortowaną wg Kraju i Miasta Proszę utworzyć kwerendę K_WybraneMiasta zwracającą NIPOdbiorcy, Nazwę Odbiorcy, Miasto z miast Warszawa i Zakopane (proszę zapisać warunek na dwa sposoby)
Lab 7 – Kwerendy cd Proszę utworzyć kwerendę K_OdbiorcyAB zwracającą NipOdbiorcy, Nazwę Proszę wybrać tylko Odbiorców z Polski których nazwa rozpoczyna się na literę A lub B (proszę zapisać warunek na dwa sposoby)
Grupowanie Grupowanie (inaczej agregowanie) dotyczy zawsze pewnych wybranych pól i polega na pogrupowaniu rekordów o takich samych wartościach wybranych pól Kwerenda w której jest grupowanie mogą pojawić się tylko: pola według których odbywa się grupowanie funkcje agregujące Przykład: dane w tabeli zostały w kwerendzie pogrupowane według pola Kraj (GROUP BY Kraj). Jak widać wartości puste (NULL) też są uznawane za oddzielną grupę i znajdują się w wyniku kwerendy. Ostatecznie otrzymujemy wszystkie unikalne wartości pola Kraj, które znajdują się w tabeli. GROUP BY Kraj
GROUP BY Kraj,WojewodztwoRegion Przykład Przykład: dane w tabeli zostały pogrupowane według pola Kraj i WojewodztwoRegion (GROUP BY Kraj, WojewodztwoRegion). W wyniku kwerendy otrzymujemy wszystkie unikalne kombinacje wartości pola Kraj i WojewodztwoRegion, które znajdują się w tabeli. Wniosek: kwerenda w której jest grupowanie według wszystkich pól tabeli spowoduje wybranie wszystkich unikalnych kombinacji wartości tabeli, czyli – jeśli tabela ma klucz – zostaną wybrane wszystkie rekordy z tabeli. GROUP BY Kraj,WojewodztwoRegion
Tworzenie kwerendy z grupowaniem Tworzymy kwerendę i dodajemy pola według których chcemy grupować Naciskamy na pasku narzędzi guzik lub wybieramy z menu Widok (View) polecenie Podsumowanie (Totals) Na dole okna kwerendy pojawia się nowy wiersz Podsumowanie (Totals), w którym dla każdego wybranego pola pojawia się domyślnie wartość Grupuj według (Group By). Aby wyłączyć grupowanie trzeba ponownie wykonać punkt 2.
Funkcje agregujące Funkcje agregujące są to funkcje, których argumentami są wartości jednego wybranego pola ze wszystkich lub z grupy rekordów. Notacja: nazwa_funkcji(nazwa_pola). Przykład: MIN(Cena) Funkcje agregujące mogą być używane razem z grupowaniem. Ich argumenty są wtedy ograniczone do rekordów z jednej grupy. MIN(SugerowanaCena)
Przykład Przykład: dane w tabeli zostały pogrupowane według pola VAT (GROUP BY Vat) i funkcja agregująca MIN dla pola SugerowanaCena ograniczona jest do rekordów z każdej grupy oddzielnie. GROUP BY VAT MIN(SugerowanaCena)
Wybrane funkcje agregujące Nazwa Opis działania SUM Suma COUNT Policz MIN Minimum MAX Maksimum WHERE Pozwala zdefiniować kryteria wyboru rekordów AVG Średnia STDEV Odchylenie standardowe
Tworzenie kwerendy z funkcjami agregującymi Tworzymy kwerendę i dodajemy pola, dla których chcemy użyć funkcji agregujących Naciskamy na pasku narzędzi guzik lub wybieramy z menu Widok (View) polecenie Podsumowanie (Totals) Na dole okna kwerendy pojawia się nowy wiersz Podsumowanie (Totals), w którym dla każdego wybranego pola pojawia się domyślnie wartość Group By. Zmieniamy wartość tego pola klikając na nie i wybierając z listy rozwijanej nazwę funkcji, której chcemy użyć.
COUNT(SugerowanaCena) Przykład Przykład: funkcja COUNT(SugerowanaCena) zwraca ilość niepustych pól SugerowanaCena (13) ze wszystkich rekordów (15) Funkcja count (policz) ignoruje rekordy w których pola są puste. W powyższym przykładzie w dwóch rekordach nie było podanej ceny, dlatego też zastosowanie funkcji policz na polu Sugerowana cena zwróciło wynik 13, choć faktycznie jest 15 rekordów. COUNT(SugerowanaCena)
Zagnieżdżanie kwerend Zagnieżdżona kwerenda jest to kwerenda, która jako źródło rekordów używa kwerendy. Przykład: kwerenda qryKraje zwraca kraje. Kwerenda qryPoliczKraje zwraca za pomocą funkcji COUNT liczbę rekordów z kwerendy qryKraje o niepustym polu Kraj. Przy bardziej skomplikowanych zapytaniach, często stosuje się kwerendy zagnieżdżone. W widoku projektu nie zawsze możliwe jest uzyskanie żądanych danych w pojedynczej kwerendzie. Zdarza się również, że wygodniej i prościej jest rozłożyć zapytanie na dwie kwerendy.
Kwerenda z parametrem Załóżmy, że istnieje potrzeba stworzenia kwerendy, która powinna zwracać rekordy spełniające jakiś warunek, który musi być formułowany za każdym razem. Możemy powiedzieć, że warunek ten będzie zdefiniowany za pomocą parametru, który musi być podany przez użytkownika. Przykładem takiej kwerendy jest kwerenda zwracająca wszystkie dane z faktury o konkretnym numerze. Zamiast zmieniać za każdym razem kryteria wyboru faktury, lepiej zdefiniować parametr odpowiadający numerowi faktury, którego podania komputer będzie żądał przy każdym uruchomieniu kwerendy. Jeżeli stworzymy raport w formie wydruku faktury oparty na tej kwerendzie, to przy każdym uruchomieniu raportu Access też będzie żądał podania numeru faktury. Dzięki temu możemy w prosty sposób stworzyć funkcjonalność do drukowania faktur.
Tworzenie kwerendy z parametrem Jeżeli w definicji kwerendy umieścimy jakikolwiek ciąg znaków w nawiasach kwadratowych [], którego Access nie może powiązać z istniejącymi elementami zapytania, to będzie traktował ten ciąg znaków jako parametr i żądał jego podania przy każdym uruchomieniu kwerendy W przykładzie zdefiniowano parametr [Podaj numer faktury:] jako kryterium dla pola NumerFaktury z tabeli Faktura. Przy uruchomieniu kwerendy Access pokazuje okno dialogowe, w którym żąda wprowadzenia wartości dla tego parametru. Wynikiem zapytania będą dane dotyczące faktury o numerze podanym w tym oknie. Parametr można zdefiniować na wielu polach. Może być także łączony z operatorami porównania np. >= [Podaj cenę min:] Możliwe jest także zdefiniowanie parametru przy wyszukiwaniu tekstowym np. wyrażenie Like [Podaj frazę: ] & "*” umożliwi nam wyszukanie rekordów o wartości pola rozpoczynających się od zadanej frazy.
Pola wyliczane Z reguły w kwerendach występują tylko pola z tabel np.: NIPOdbiorcy, Nazwa itd. Jednak zdarza się, że trzeba zwrócić inne wartości, np., zamiast wyświetlać oddzielnie kolumny ilosc i cene, lepiej wyświetlić wartość W kwerendzie możemy w kolumnie zamiast nawy pola wpisać dowolne wyrażenie np. Wartość: Ilosc * Cena gdzie Wartość stanie się aliasem dla kolumny, a Ilosc i Cena to nazwy pól z Tabeli Alias to nowa nazwa dla kolumny, którą można zastosować również dla wszystkich innych kolumn. Jeśli np. zastosujemy funkcję policz dla kolumny NIP to kolumna domyślnie będzie się nazywała PoliczOfNIP – możemy jednak w projekcie kwerendy zmodyfikować wartość w nazwie pola NIP na: Liczba Odbiorców: NIP. W widoku danych nasza kolumna będzie wyświetlana z nową nazwą.
Lab 8 – kwerendy grupujące Proszę otworzyć bazę lab2 z dysku c:\access Proszę utworzyć kwerendę K_Kraje zwracającą Unikalne Nazwy Krajów Proszę utworzyć kwerendę K_LiczbaOdbiorcow zwracającą Liczbę Odbiorców Proszę utworzyć kwerendę K_LiczbaOdbiorcowMiasta zwracającą Nazwę Kraju, Nazwę Miasta i Liczbę Odbiorców w danym Mieście Dane mają być posortowane malejąco wg liczby odbiorców. Proszę utworzyć kwerendę K_StatystykaTowarów zwracającą Liczbę towarów, Cenę min, max i średnią z podziałem na Stawkę VAT
Lab 8 – kwerendy grupujące cd. Proszę utworzyć kwerendę K_NajlepszeMiasta zwracającą Nazwę Miasta i Liczbę Odbiorców w danym mieście. Dane mają być posortowane wg Liczby Odbiorców malejąco. Proszę wybrać tylko te Miasta w których jest co najmniej 10 Odbiorców Proszę utworzyć kwerendę K_Suma_Faktur która dla każdego Odbiorcy zwróci NipOdbiorcy, Nazwę, liczbę Faktur, oraz sumaryczną wartość wszystkich faktur. Dane mają być posortowane wg sumarycznej wartości faktur malejąco.