Podzapytania – zapytania SELECT umieszczone w innym zapytaniu SELECT

21
1 Podzapytania – zapytania SELECT umieszczone w innym zapytaniu SELECT 01. podzapytanie z równością – podaj wszystkich pracowników zatrudniony w biurze przy ulicy Małej 63: SELECT Personel.pracownikNr, Personel.imię, Personel.nazwisko, Personel.stanowisko FROM Personel WHERE Personel.biuroNr=(SELECT biuroNr FROM Biuro WHERE ulica = "Mała 63"); 02. podzapytanie z funkcją agregującą – podaj wszystkich pracowników, których pensja jest wyższa od średniej; pokaż różnice między poszczególnymi pensjami a średnią: SELECT Personel.pracownikNr, Personel.imię, Personel.nazwisko, Personel.stanowisko, [pensja]-(SELECT AVG(pensja) FROM personel) AS różnica FROM Personel WHERE (((Personel.pensja)>(SELECT AVG(pensja) FROM Personel)));

description

Podzapytania – zapytania SELECT umieszczone w innym zapytaniu SELECT. 01 . podzapytanie z równością – podaj wszystkich pracowników zatrudniony w biurze przy ulicy Małej 63: SELECT Personel.pracownikNr, Personel.imię, Personel.nazwisko, Personel.stanowisko FROM Personel - PowerPoint PPT Presentation

Transcript of Podzapytania – zapytania SELECT umieszczone w innym zapytaniu SELECT

Page 1: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

1

Podzapytania – zapytania SELECT umieszczone w innym zapytaniu SELECT

01. podzapytanie z równością – podaj wszystkich pracowników zatrudniony w biurze przy ulicy Małej 63:

SELECT Personel.pracownikNr, Personel.imię, Personel.nazwisko, Personel.stanowisko

FROM Personel

WHERE Personel.biuroNr=(SELECT biuroNr FROM Biuro WHERE ulica = "Mała 63");

 02. podzapytanie z funkcją agregującą – podaj wszystkich pracowników, których pensja jest wyższa od średniej; pokaż różnice między poszczególnymi pensjami a średnią:

SELECT Personel.pracownikNr, Personel.imię, Personel.nazwisko, Personel.stanowisko, [pensja]-(SELECT AVG(pensja) FROM personel) AS różnica

FROM Personel

WHERE (((Personel.pensja)>(SELECT AVG(pensja) FROM Personel)));

Page 2: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

2

03. podzapytania zagnieżdżone – powtórzenia właścicieli nieruchomości:

SELECT Nieruchomość.właścicielNr, Nieruchomość.nieruchomośćNr, Nieruchomość.miasto, Nieruchomość.ulica

FROM Nieruchomość

WHERE (((Nieruchomość.właścicielNr) IN (SELECT [właścicielNr] FROM [Nieruchomość] AS Tmp GROUP BY [właścicielNr] HAVING Count(*)>1 )))

ORDER BY Nieruchomość.właścicielNr;

04. zastosowanie ANY / SOME – znajdź wszystkich pracowników, którzy mają pensję wyższą niż przynajmniej jeden pracownik biura o numerze B003

  SELECT Personel.pracownikNr, Personel.imię, Personel.nazwisko, Personel.stanowisko, Personel.pensja

FROM Personel

WHERE pensja > SOME (SELECT pensja FROM Personel WHERE biuroNr="B003"); 

Page 3: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

3

05. zastosowanie ALL – znajdź wszystkich pracowników, którzy mają pensję wyższą niż pensja każdego z pracowników biura o numerze B003

SELECT Personel.pracownikNr, Personel.imię, Personel.nazwisko, Personel.stanowisko, Personel.pensja

FROM Personel

WHERE.pensja>ALL (SELECT pensja FROM Personel WHERE biuroNr="B003");

Kwerendy z odnośnikami

06. Wpisywanie danych pracowników z uzupełnieniem danych o Biurze:

SELECT Personel.pracownikNr, Personel.imię, Personel.nazwisko, Personel.stanowisko, Personel.płeć, Personel.dataUr, Personel.pensja, Personel.biuroNr, Biuro.ulica, Biuro.miasto

FROM Biuro INNER JOIN Personel ON Biuro.biuroNr = Personel.biuroNr;

Page 4: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

4

Pułapki w Access:

07 – Podaj nazwiska, stanowiska oraz wysokości pensji pracowników z biura o wpisanym numerze

Problem maski: \B000

wówczas zapisywane dane do tabeli 002

003

004 itd.

Powinna być maska w tabeli: \B000;0;_

Aby litera B była zapisywana razem z pozostałymi cyframi.

08 – informacje o nieruchomościach nadzorowanych przez pracownika

Inna sytuacja gdzie kryteria mogą być wpisywane również małymi literami.

Page 5: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

5

Właściwości sprzężenia w kwerendzie:

09 – Obiekt Biuro nie pasuje do obiektu Personel (właściwości sprzężenia w kwerendzie nr 2)

SELECT Biuro.biuroNr, Biuro.miasto

FROM Biuro LEFT JOIN Personel ON Biuro.biuroNr = Personel.biuroNr

WHERE (((Personel.biuroNr) Is Null));

Page 6: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

6

Funkcje agregujące i do jakich pól można ich użyć:

Wybierz Aby obliczyć Dopuszczalne typy danych

Suma Sumę wartości w polu. Liczba, Data/Godzina, Waluta i Autonumerowanie

Średnia Średnią z wartości w polu. Liczba, Data/Godzina, Waluta i Autonumerowanie

Minimum Najmniejszą wartość w polu. Tekst, Liczba, Data/Godzina, Waluta i Autonumerowanie

Maksimum Największą wartość w polu. Tekst, Liczba, Data/Godzina, Waluta i Autonumerowanie

Zlicz Liczbę wartości pola, z pominięciem wartości Null (pustych).

Tekst, Memo, Liczba, Data/Godzina, Waluta, Autonumerowanie, Tak/Nie i Obiekt OLE

OdchStd Odchylenie standardowe wartości w polu.

Liczba, Data/Godzina, Waluta i Autonumerowanie

Wariancja Wariancję wartości w polu. Liczba, Data/Godzina, Waluta i Autonumerowanie

Page 7: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

7

Wybierz Aby

Grupuj według Określić grupy, dla których mają zostać przeprowadzone obliczenia. Aby na przykład obliczyć wartość sprzedaży według kategorii, należy wybrać opcję Grupuj według dla pola "NazwaKategorii".

Wyrażenie Utworzyć pole obliczeniowe zawierające w swoim wyrażeniu funkcję agregującą. Pole obliczeniowe tworzy się zazwyczaj wtedy, gdy w wyrażeniu jest kilka funkcji.

Gdzie Określić kryteria dla pola, które nie jest używane do zdefiniowania grupy. Jeśli opcja ta zostanie wybrana dla pola, Program Microsoft Access ukryje to pole w wynikach kwerendy przez wyczyszczenie pola wyboru Pokaż.

10a – liczba pracowników każdego z biur oraz ich sumaryczna pensja

Uwaga   Funkcje agregujące nie uwzględniają w obliczeniach rekordów zawierających wartości puste (Null).

Również jeśli w wyrażeniu używany jest operator arytmetyczny (+, -, *, /) i jedno z pól w wyrażeniu ma wartość Null, wynik całego wyrażenia będzie Null.

Można przekształcić wartość Null w zero używając np.. funkcji Nz lub IIf.

Page 8: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

8

Przykłady pracy z wartościami Null za pomocą pól obliczeniowych:

Wyrażenie:

BieżącyKraj: IIf(IsNull([Kraj]); " "; [Kraj])

Używa funkcji IIf i IsNull do wyświetlania pustego ciągu znaków w polu "BieżącyKraj", jeśli wartość w polu "Kraj" jest Null. Jeśli nie, wyświetlana jest wartość z pola "Kraj".

CzasDostawy: IIf(IsNull([DataWymagana] - [DataWysyłki]); "Znajdź brakującą datę"; [DataWymagana] - [DataWysyłki])

Używa funkcji IIf i IsNull do wyświetlania w polu "CzasDostawy" komunikatu "Znajdź brakującą datę" jeśli wartość w polu "DataWymagana" lub "DataWysyłki" jest wartością Null. Jeśli nie, wyświetlana jest różnica tych wartości.

Page 9: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

9

SprzedażPółroczna: Nz([Sprz1Kwart];0) + Nz([Sprz2Kwart];0)

W polu "SprzedażPółroczna" wyświetla sumę wartości w polach opisujących sprzedaż w pierwszym i drugim kwartale, wykorzystując funkcję Nz do przekształcania wartości Null w zero.

Baza: Null.mdb

IIf(IsNull([CenaJednostkowa]); 0 ;[CenaJednostkowa])

Zmienia wartość Null na zero (0) w polu "CenaJednostkowa".

10b – liczba pracowników każdego z biur oraz ich sumaryczna pensja

Page 10: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

10

Wyrażenie Opis

ImięINazwisko: [Imię] & " " & [Nazwisko]

Wyświetla wartości pól "Imię" i "Nazwisko" oddzielone spacją w polu "ImięINazwisko".

Addres2: [Miasto] & " " & [Region] & " " & [KodPocztowy]

Wyświetla wartości pól "Miasto", "Region" i "KodPocztowy" oddzielone spacjami w polu "Addres2".

IDproduktu: Left([NazwaProduktu]; 1) Wykorzystuje funkcję Left do wyświetlania w polu "IDproduktu" pierwszego znaku wartości z pola "NazwaProduktu".

KodTypu: Right([KodMajątkowy];2) Używa funkcji Right do wyświetlania w polu "KodTypu" ostatnich dwóch znaków wartości z pola "KodMajątkowy".

NumerKierunkowy: Mid([Telefon];2;3) Używa funkcji Mid do wyświetlania w polu "NumerKierunkowy" trzech znaków poczynając od drugiego znaku wartości w polu "Telefon".

Inne przykłady operacji wykonywanych na wartościach tekstowych w polach obliczeniowych:

Page 11: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

11

Left(wyr; n) Right(wyr; n) Mid(wyr; start; n)

Argument wyr może być nazwą pola (ujętą w nawiasy) lub wyrażeniem tekstowym; Argument n oznacza liczbę znaków, które mają zostać wyodrębnione, a argument start określa położenie pierwszego wyodrębnianego znaku.

Wartość w polu IDczęści Wyrażenie Zwraca

BA-7893-R12 Left([IDczęści];2) BA

BA-7893-R12 Right([IDczęści];3) R12

BA-7893-R12 Mid([IDczęści];4;4) 7893

11-pierwszy znak z numeru nieruchomości itd.

Wyrażenia wprowadzane są w komórce Pole w siatce projektu kwerendy.

Page 12: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

12

Przykłady wyrażeń, w których jako kryteria zastosowano wartości tekstowe

NazwaFirmy >="N" Wyświetla zamówienia wysłane do firm, których nazwy zaczynają się na litery od N do Z.

IDzamówienia Right([OrderID]; 2)="99" Używa funkcji Right aby wyświetlić zamówienia, których IDzamówienia kończy się na 99.

NazwaFirmy Len([NazwaFirmy])>Val(30) Używa funkcji Len i Val, aby wyświetlić zamówienia wysłane do firm, których nazwy są dłuższe niż 30 znaków.

12a – nieruchomości przy ulicach od A do K

12b – właściciele nieruchomości o numerach końcowych 46 lub 87

12c – miejscowości o nazwach dłuższych niż 5 znaków

Page 13: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

13

Przykłady zmieniania i obliczania dat w polach obliczeniowych:

Year(date) Month(date) Day(date) Hour(time) Minute(time) Second(time)

Date(): 2005-04-28

Now(): 2005-04-28 13:07:52

Time(): 13:07:53

13-operacje na datach w polach obliczeniowych

Wyrażenie Opis

CzasDostawy: DateDiff("d"; [DataZamówienia]; [DataWysyłki])

Używa funkcji DateDiff do wyświetlania w polu "CzasDostawy" liczby dni między datą zamówienia i datą wysyłki.

RokZatrudnienia: DatePart("rrrr";[DataZatrudnienia])

Używa funkcji DatePart do wyświetlania w polu "RokZatrudnienia" roku, w którym został zatrudniony każdy z pracowników.

Date( )- 30 Używa funkcji Date do wyświetlania daty o 30 dni wcześniejszej od daty bieżącej.

Page 14: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

14

Operacje na datach wykorzystywane w kryteriach:

Pole Wyrażenie Opis

DataWymagana Between Date( ) And DateAdd("m"; 3; Date( ))

Używa operatora Between...And i funkcji DateAdd i Date aby wyświetlić zamówienia, które mają zostać zrealizowane w ciągu trzech miesięcy od daty bieżącej.

DataZamówienia < Date( )- 30 Używa funkcji Date, aby wyświetlić zamówienia, które mają ponad 30 dni.

DataZamówienia Year([DataZamówienia])= 1996

Używa funkcji Year, aby wyświetlić zamówienia, które zostały złożone w roku 1996.

14a-nieruchomości których wynajęcie kończy się w ciągu 3 miesięcy

14b- nieruchomości których wynajęcie skończyło się więcej niż 30 dni temu

14c-nieruchomości, których wynajęcie skończyło się w 2004 roku

Page 15: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

15

DataZamówienia DatePart("k"; [DataZamówienia])=4 Używa funkcji DatePart, aby wyświetlić zamówienia przypadające na czwarty kwartał.

DataZamówienia DateSerial(Year([DataZamówienia]); Month([DataZamówienia]) +1; 1)-1

Używa funkcji DateSerial, Year i Month, aby wyświetlić zamówienia do realizacji ostatniego dnia każdego miesiąca.

DataZamówienia Year([DataZamówienia])=Year(Now()) And Month([DataZamówienia])=Month(Now())

Używa funkcji Year i Month oraz operatora And, aby wyświetlić zamówienia na bieżący rok i miesiąc.

15a-nieruchomości których wynajęcie kończy się w tym kwartale

15b- nieruchomości których wynajęcie kończy się ostatniego dnia miesiąca

15c-nieruchomości których wynajęcie kończy się w bieżącym roku i miesiącu

Page 16: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

16

Opis funkcji dotyczących dat:

DateDiff (część_daty, data1, data2[, firstdayofweek[, firstweekofyear]])

DatePart (część_daty, data[,firstdayofweek[, firstweekofyear]])

DateAdd (część_daty, liczba, data)

Weekday (data, [firstdayofweek])

część_daty Setting (SQL) Opis

rrrr yyyy rok

k q kwartał

m m miesiąc

r y dzień roku

d d dzień miesiąca

t w dzień tygodnia

tt ww tydzień

g h godzina

n n minuta

s s sekunda

Page 17: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

17

firstdayofweek argument: firstweekofyear argument:

Wartość Opis

1 niedziela (domyślnie)

2 poniedziałek

3 wtorek

4 środa

5 czwartek

6 piątek

7 sobota

Wartość Opis

1 Rozpoczyna liczenie w tygodniu, w którym jest 1 stycznia (domyślne).

2 Rozpoczyna liczenie w tygodniu, który zawiera

co najmniej 4 dni nowego roku.

3 Rozpoczyna liczenie od pełnego tygodnia roku.

Page 18: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

18

Użytkownik „Biuro” 4 (zarząd biura):

17. Podaj informacje o wynajęciach nieruchomości zarejestrowanych w danym biurze, których termin końcowy upłynie w następnym miesiącu.

18. Podaj całkowitą liczbę umów najmu zawartych w biurach w Łomży na okres krótszy niż jeden rok.

Page 19: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

19

Kreowanie formularzy:

Kontrolowanie czasu wyświetlania:

1-Start - zamykany po 5 sekundach

Private Sub Form_Open(Cancel As Integer)

Me.TimerInterval = 5000

End Sub

Private Sub Form_Timer()

DoCmd.Close acForm, Me.Name

DoCmd.OpenForm "2-Przełączający hiperłącza"

DoCmd.OpenForm "3-Przełączający formularze"

End Sub

Page 20: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

20

Formularze przełączane przy użyciu hiperłączy do przekazywania fokusu

2-Przełączający hiperłącza

Dla etykiety w właściwościach Formatu ustawiamy adres hiperłącza

Przełączanie przy użyciu przycisków i kodu w VBA

3-Przełączający formularze z zamykaniem pozostawionych

Page 21: Podzapytania  – zapytania SELECT umieszczone w innym zapytaniu SELECT

21

4 – korzystanie z kreatorów i formatowanie warunkowe

5 – podformularze

6 – formularz wyszukujący do kwerendy z pola tekstowego

7 – Personel wybierany bezpośrednio z pola kombi