Wprowadzenie do SQL TEMAT 4 - Zadania dodatkowe

Podobne dokumenty
Wprowadzenie do SQL TEMAT 3 - Zadania dodatkowe

Krok 1. SELECT Symbol AS KS INTO Dzielnik FROM Towary WHERE (Nazwa='Orzeszki solone') OR (Nazwa = 'Zupy CHOISE') OR (Nazwa = 'Kawa BURG');

Wprowadzenie do SQL. Instrukcja laboratoryjna

Wprowadzenie do SQL. Instrukcja laboratoryjna. Ludmiła Rekuć, Witold Rekuć

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Autor: Joanna Karwowska

Bazy danych SQL Server 2005

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Relacyjne bazy danych. Podstawy SQL

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

Operacja Teta-złączenia. v1 v1 Θ v2

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Zadania z SQLa (MS SQL Server)

Bazy danych. Wykład V Kwerendy. Copyrights by Arkadiusz Rzucidło 1

Bazy danych. dr inż. Arkadiusz Mirakowski

Baza danych Uczniowie.mdb

Relacyjne bazy danych. Podstawy SQL

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Marek Rakowski Zdanie SELECT wybieranie danych z wielu tabel Strona 1 z 6

Wykład kończy się zaliczeniem na ocenę na podstawie kolokwium, które zostanie przeprowadzone na przedostatnim wykładzie

Złączenie CROSS JOIN jest to tzw. złączenie krzyżowe, którego ogólna postać wygląda następująco:

ACESS- zadania z wykorzystaniem poleceń SQL

Podstawy Informatyki Wykład X

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Technologia przetwarzania danych. Instrukcja laboratoryjna

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Bazy danych 10. SQL Widoki

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Grupowanie i funkcje agregujące

Systemy GIS Tworzenie zapytań w bazach danych

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Wykład 6. SQL praca z tabelami 3

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Wykład 5. SQL praca z tabelami 2

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Projektowanie Systemów Inf.

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

8.9. Język SQL Kwerenda wybierająca w języku SQL

Microsoft SQL Server Podstawy T-SQL

Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem.

Podyplomowe Studia Systemy informatyczne w logistyce

Ćwiczenie zapytań języka bazy danych PostgreSQL

Relacji między tabelami klucze obce. Schemat bazy danych, wczytanej z pliku create_tables.sql. Klucz obcy jako ograniczenie dla kolumny

Przykładowa baza danych BIBLIOTEKA

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Dr inż. Witold Rekuć Katedra Badań Operacyjnych, Finansów i Zastosowań Informatyki

Dr inż. Witold Rekuć Katedra Badań Operacyjnych, Finansów i Zastosowań Informatyki

Bazy danych. Instrukcja laboratoryjna

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Laboratorium Bazy danych SQL 2

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Język SQL, zajęcia nr 1

NORTHWIND. Anonco.pl. ćwiczenia praktyczne. KiK s Tutorials. NORTHWIND dwiczenia praktyczne. ANONCO.PL/SQL SQLSERVERDLAOPORNYCH.WORDPRESS.

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

SQL (ang. Structured Query Language)

SQL - Structured Query Language. strukturalny język zapytań

SQL praca z tabelami 4. Wykład 7

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Przestrzenne bazy danych Podstawy języka SQL

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Paweł Rajba

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

TEST E.14 BAZY DANYCH

P o d s t a w y j ę z y k a S Q L

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Cel przedmiotu. Wymagania wstępne w zakresie wiedzy, umiejętności i innych kompetencji 1 Język angielski 2 Inżynieria oprogramowania

Jerzy Nawrocki, Wprowadzenie do informatyki

Wypisujemy nazwiska pracowników o numerach równych 100 lub 500. SELECT DISTINCT Nazwisko FROM Pracownik WHERE NrPrac IN (100,500);

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

Aliasy Select p.first_name, p.salary, j.job_title from employees p, jobs j where p.job_id=j.job_id;

Technologia przetwarzania danych. Instrukcja laboratoryjna. Ludmiła Rekuć, Witold Rekuć

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

SIECI KOMPUTEROWE I BAZY DANYCH

PROJEKTOWANIE BAZ DANYCH

Bazy danych. Dr inż. Paweł Kasprowski

Podstawy języka SQL - dokończenie TRANSAKCJE 1

STROJENIE PRZETWARZAŃ SAS

1. Tworzenie tabeli. 2. Umieszczanie danych w tabeli

Bazy danych kwerendy (moduł 5) 1. Przekopiuj na dysk F:\ bazę M5KW.mdb z dysku wskazanego przez prowadzącego

Optymalizacja poleceń SQL Metody dostępu do danych

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Zapytania INSERT. Forma_platnosci. INSERT INTO forma_platnosci VALUES ('1', 'Gotówka'); INSERT INTO forma_platnosci VALUES ('2', 'Przelew odroczony');

Język SQL w Delphi. 1. Kwerendy Przygotowanie do ćwiczenia Komenda SELECT

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

3. Podzapytania, łączenie tabel i zapytań

a) Polecenie: Wyświetl wszystkie rekordy z tabeli Pracownicy (wszystkie atrybuty)

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

LAB 3 (część 1 Projektu)

Szkolenie autoryzowane. MS Tworzenie zapytań do Microsoft SQL Server Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Technologie baz danych

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Podstawy języka SQL -

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

Zapytania do bazy danych

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Transkrypt:

Wprowadzenie do SQL TEMAT 4 - Zadania dodatkowe 1. Znaleźć firmy, z którymi nie była przeprowadzona żadna transakcja. (RÓŻNICA) Krok 1: utworzenie tabeli BEZ_TRANSAKCJI będącej kopią tabeli FIRMY i w której będzie wynik zadania (267 rekordów) SELECT FIRMY.* INTO BEZ_TRANSAKCJI FROM FIRMY; Krok 2: usuwanie nabywców (69 rekordów) DELETE DISTINCTROW BEZ_TRANSAKCJI.* FROM BEZ_TRANSAKCJI INNER JOIN DOKUMENTY ON BEZ_TRANSAKCJI.Nr = DOKUMENTY.NrNabywcy; Krok 3: usuwanie sprzedawców (4 rekordy) DELETE DISTINCTROW BEZ_TRANSAKCJI.* FROM BEZ_TRANSAKCJI INNER JOIN DOKUMENTY ON BEZ_TRANSAKCJI.Nr = DOKUMENTY.NrSprzedawcy; Krok 4: prezentacja wyniku SELECT *FROM BEZ_TRANSAKCJI;

2. Znaleźć towary, które były przez Naszą firmę sprzedawane klientom z Wrocławia i nie były sprzedawane klientom z województwa dolnośląskiego (spoza Wrocławia). ({towary Wrocław} {towary dolnośląskie, ale nie Wrocław}) KROK 1: towary (94 towary) sprzedawane przez Naszą firmę do tabeli TYLKO_WE_WROCŁAWIU; w tej tabeli będzie wynik zadania SELECT DISTINCT Symbol, TOWARY.Nazwa INTO TYLKO_WE_WROCŁAWIU FROM (((TOWARY INNER JOIN POZYCJEDOKUMENTU ON TOWARY.Symbol = POZYCJEDOKUMENTU.SmbTow) INNER JOIN DOKUMENTY ON POZYCJEDOKUMENTU.NrFaktury = DOKUMENTY.NrFaktury AND (POZYCJEDOKUMENTU.NrSprzedawcy = DOKUMENTY.NrSprzedawcy) INNER JOIN FIRMY ON DOKUMENTY.NrNabywcy = FIRMY.Nr) INNER JOIN MIEJSCOWOŚCI ON FIRMY.KodMjc = MIEJSCOWOŚCI.Kod WHERE MIEJSCOWOŚCI.Nazwa="Wrocław" AND DOKUMENTY.NrSprzedawcy=0; WARIANT A: KROK 2: tworzenie tabeli W_WOJEW_ALE_POZA_WROCŁAWIEM z towarami sprzedawanymi przez Naszą firmę w województwie dolnośląskim, ale w miejscowościach poza Wrocławiem SELECT DISTINCT SmbTow, TOWARY.Nazwa INTO W_WOJEW_ALE_POZA_WROCŁAWIEM FROM (((TOWARY INNER JOIN POZYCJEDOKUMENTU ON TOWARY.Symbol = POZYCJEDOKUMENTU.SmbTow)

INNER JOIN DOKUMENTY ON POZYCJEDOKUMENTU.NrFaktury = DOKUMENTY.NrFaktury AND (POZYCJEDOKUMENTU.NrSprzedawcy = DOKUMENTY.NrSprzedawcy) INNER JOIN FIRMY ON DOKUMENTY.NrNabywcy = FIRMY.Nr) INNER JOIN MIEJSCOWOŚCI ON FIRMY.KodMjc = MIEJSCOWOŚCI.Kod WHERE MIEJSCOWOŚCI.Nazwa<>"Wrocław" AND WOJEWÓDZTWA.Nazwa= dolnośląskie DOKUMENTY.NrSprzedawcy= 0; Uwaga: Tabela TOWARY w złączeniu i TOWARY.Nazwa w schemacie odpowiedzi nie są niezbędne dla potrzeb znalezienia odpowiedzi; tu wprowadzone dla poprawienia czytelności tabeli pomocniczej W_WOJEW_ALE_POZA_WROCŁAWIEM. Towarów sprzedawanych w województwie dolnośląskim lecz poza Wrocławiem jest 10, KROK 3: DELETE DISTINCTROW TYLKO_WE_WROCŁAWIU.* FROM TYLKO_WE_WROCŁAWIU INNER JOIN W_WOJEW_ALE_POZA_WROCŁAWIEM ON TYLKO_WE_WROCŁAWIU.Symbol= W_WOJEW_ALE_POZA_WROCŁAWIEM.Symbol; Rekordów wspólnych z tabelą TYLKO_WE_WROCŁAWIU jest tylko 9 i tyle jest usuwanych (widok arkusza)

232 Uldo-Nova Top jest tym 10-tym nieusuwanym rekordem (zaznaczony w kroku 2 na czerwono) WARIANT B: KROK 2: z tabeli TYLKO_WE_WROCŁAWIU usuwane są towary sprzedawane w województwie dolnośląskim lecz poza Wrocławiem wskazane przez złączenie (FROM) DELETE DISTINCTROW TYLKO_WE_WROCŁAWIU.* FROM (((((TYLKO_WE_WROCŁAWIU INNER JOIN TOWARY ON tylko_we_wrocławiu.symbol=towary.symbol) INNER JOIN POZYCJEDOKUMENTU ON TOWARY.Symbol = POZYCJEDOKUMENTU.SmbTow) INNER JOIN DOKUMENTY ON POZYCJEDOKUMENTU.NrFaktury = DOKUMENTY.NrFaktury AND POZYCJEDOKUMENTU.NrSprzedawcy = DOKUMENTY.NrSprzedawcy) INNER JOIN FIRMY ON DOKUMENTY.NrNabywcy = FIRMY.Nr) INNER JOIN MIEJSCOWOŚCI ON FIRMY.KodMjc = MIEJSCOWOŚCI.Kod) INNER JOIN WOJEWÓDZTWA ON MIEJSCOWOŚCI.Kodwoj=WOJEWÓDZTWA.KOD WHERE MIEJSCOWOŚCI.Nazwa<>"Wrocław" AND DOKUMENTY.NrSprzedawcy=0 AND WOJEWÓDZTWA.NAZWA="dolnośląskie" ;

WARIANT C z podkwerendą: DELETE DISTINCTROW TYLKO_WE_WROCŁAWIU.* FROM ( SELECT SmbTow FROM (((POZYCJEDOKUMENTU INNER JOIN DOKUMENTY ON POZYCJEDOKUMENTU.NrSprzedawcy = DOKUMENTY.NrSprzedawcy AND POZYCJEDOKUMENTU.NrFaktury = DOKUMENTY.NrFaktury) INNER JOIN FIRMY ON DOKUMENTY.NrNabywcy = FIRMY.Nr) \INNER JOIN MIEJSCOWOŚCI ON FIRMY.KodMjc = MIEJSCOWOŚCI.Kod) INNER JOIN WOJEWÓDZTWA ON MIEJSCOWOŚCI.Kodwoj=WOJEWÓDZTWA.KOD WHERE MIEJSCOWOŚCI.Nazwa<>"Wrocław" AND DOKUMENTY.NrSprzedawcy=0 AND WOJEWÓDZTWA.NAZWA="dolnośląskie") AS W_WOJ_POZA_WROCŁAWIEM INNER JOIN TYLKO_WE_WROCŁAWIU ON W_WOJ_POZA_WROCŁAWIEM.SmbTow= TYLKO_WE_WROCŁAWIU.Symbol; WYNIK W KAŻDYM PRZYPADKU: 85 towarów

3. Utworzyć za pomocą kwerendy tabelę "M1" o schemacie {NazwaMjc} miejscowości klientów kupujących w Naszej firmie konserwę albo kawę, oraz tabelę "M2" o schemacie {NazwaMjc} miejscowości klientów kupujących herbatę. Znaleźć miejscowości, które znalazły się w obu tabelach. (M1 M2) Krok 1: tworzenie tabeli M1 SELECT DISTINCT MIEJSCOWOŚCI.Nazwa INTO M1 FROM (((FIRMY INNER JOIN POZYCJEDOKUMENTU ON DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy AND DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury) INNER JOIN TOWARY ON POZYCJEDOKUMENTU.SmbTow = TOWARY.Symbol) INNER JOIN MIEJSCOWOŚCI ON FIRMY.KodMjc = MIEJSCOWOŚCI.Kod WHERE (TOWARY.Nazwa Like "*konserw*" AND DOKUMENTY.NrSprzedawcy=0) OR (TOWARY.Nazwa Like "*kawa*" AND DOKUMENTY.NrSprzedawcy=0);

Krok 2: tworzenie tabeli M2 SELECT DISTINCT MIEJSCOWOŚCI.Nazwa INTO M2 FROM (((FIRMY INNER JOIN POZYCJEDOKUMENTU ON DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy AND DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury) INNER JOIN TOWARY ON POZYCJEDOKUMENTU.SmbTow = TOWARY.Symbol) INNER JOIN MIEJSCOWOŚCI ON FIRMY.KodMjc = MIEJSCOWOŚCI.Kod WHERE (TOWARY.Nazwa Like "*herbata*" AND DOKUMENTY.NrSprzedawcy=0) ; Krok 3: SELECT M1.Nazwa FROM M1 INNER JOIN M2 ON M1.Nazwa= M2.Nazwa; WYNIK:

4. Znaleźć poszukiwane w zadaniu 3 miejscowości bez tworzenia tabel, w jednej kwerendzie SQL z podkwerendami. (ILOCZYN) SELECT M1.* FROM ( SELECT DISTINCT MIEJSCOWOŚCI.Nazwa FROM (((FIRMY INNER JOIN POZYCJEDOKUMENTU ON DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy AND DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury) INNER JOIN TOWARY ON POZYCJEDOKUMENTU.SmbTow = TOWARY.Symbol) INNER JOIN MIEJSCOWOŚCI ON FIRMY.KodMjc = MIEJSCOWOŚCI.Kod WHERE (TOWARY.Nazwa Like "*konserw*" AND DOKUMENTY.NrSprzedawcy=0) OR (TOWARY.Nazwa Like "*kawa*" AND DOKUMENTY.NrSprzedawcy=0) )AS M1 INNER JOIN ( SELECT DISTINCT MIEJSCOWOŚCI.Nazwa FROM (((FIRMY INNER JOIN POZYCJEDOKUMENTU ON DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy AND DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury) INNER JOIN TOWARY ON POZYCJEDOKUMENTU.SmbTow = TOWARY.Symbol) INNER JOIN MIEJSCOWOŚCI ON FIRMY.KodMjc = MIEJSCOWOŚCI.Kod WHERE (TOWARY.Nazwa Like "*herbata*" AND DOKUMENTY.NrSprzedawcy=0) )AS M2 ON M1.Nazwa=M2.Nazwa ; WYNIK:

5. Utworzyć za pomocą kwerendy tabelę "T1" o schemacie {Symbol,Nazwa} towarów, które były kupowane w Naszej firmie przez klientów z Wrocławia w lipcu 1992 albo przez klientów z Krakowa w sierpniu 1992 i tabelę "T2" o schemacie {Symbol,Nazwa} towarów sprzedawanych klientom z Warszawy kiedykolwiek. Znaleźć towary, które są w tabeli "T1" i nie występują w "T2". (T1 T2) Krok 1: tworzenie T1 SELECT DISTINCT Symbol,TOWARY.Nazwa INTO T1 FROM (((MIEJSCOWOŚCI INNER JOIN FIRMY ON MIEJSCOWOŚCI.Kod = FIRMY.KodMjc) INNER JOIN POZYCJEDOKUMENTU ON DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy AND DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury) INNER JOIN TOWARY ON POZYCJEDOKUMENTU.SmbTow = TOWARY.Symbol WHERE (Month([Data])=7 AND Year([data])=1992 AND DOKUMENTY.NrSprzedawcy=0 AND MIEJSCOWOŚCI.Nazwa="Wrocław") OR (Month([Data]))=8 AND Year([data])=1992 AND DOKUMENTY.NrSprzedawcy=0 AND MIEJSCOWOŚCI.Nazwa="Kraków"); Krok 2: tworzenie T2 SELECT DISTINCT Symbol,TOWARY.Nazwa INTO T2 FROM (((MIEJSCOWOŚCI INNER JOIN FIRMY ON MIEJSCOWOŚCI.Kod = FIRMY.KodMjc) INNER JOIN POZYCJEDOKUMENTU ON DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy AND DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury) INNER JOIN TOWARY ON POZYCJEDOKUMENTU.SmybTow = TOWARY.Symbol WHERE DOKUMENTY.NrSprzedawcy=0 AND MIEJSCOWOŚCI.Nazwa="Warszawa"; Część wspólną T1 i T2 stanowi 1 rekord (zaznaczony czerwoną ramką)

Krok 3: T1-T2; wynik w T1 DELETE DISTINCTROW T1.* FROM T1 INNER JOIN T2 ON T1.Symbol=T2.Symbol;

6. Utworzyć za pomocą kwerendy tabelę "W1" o schemacie {NazwaWoj} województw firm, którym Nasza firma sprzedawała albo od nich kupowała kawę na kwotę większą niż 30 zł jednorazowo oraz tabelę "W2" nazw województw firm, z którymi przedmiotem transakcji (kupna lub sprzedaży) była konserwa lub ryż. Zsumować zawartość tabel W1 i W2 w tabeli W2. (W1 W2 gdzie W1 =W1_1{woj.firm którym NF sprzedawała kawę za więcej niż 30} W1_2{woj.firm które sprzedawały NF kawę za więcej n iż 30 }, a W2= W2_1{woj.firm którym NF sprzedawała konserwy lub ryż} W2_2{woj.firm które sprzedawały NF konserwy lub ryż }) Krok 1: tworzenie tabeli W1 SELECT NazwaWoj INTO W1 FROM ( SELECT DISTINCT WOJEWÓDZTWA.Nazwa AS NazwaWoj FROM ((((WOJEWÓDZTWA INNER JOIN MIEJSCOWOŚCI ON WOJEWÓDZTWA.Kod = MIEJSCOWOŚCI.KodWoj) INNER JOIN FIRMY ON MIEJSCOWOŚCI.Kod = FIRMY.KodMjc) INNER JOIN POZYCJEDOKUMENTU ON (DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy) AND (DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury)) INNER JOIN TOWARY ON POZYCJEDOKUMENTU.SmbTow = TOWARY.Symbol WHERE Ilość*CenaNetto>30 AND TOWARY.Nazwa Like "*kawa*" AND DOKUMENTY.NrSprzedawcy=0 Union SELECT DISTINCT WOJEWÓDZTWA.Nazwa AS NazwaWoj FROM ((((WOJEWÓDZTWA INNER JOIN MIEJSCOWOŚCI ON WOJEWÓDZTWA.Kod = MIEJSCOWOŚCI.KodWoj) INNER JOIN FIRMY ON MIEJSCOWOŚCI.Kod = FIRMY.KodMjc) INNER JOIN DOKUMENTY ON FIRMY.Nr = DOKUMENTY.NrSprzedawcy) INNER JOIN POZYCJEDOKUMENTU ON (DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy) AND (DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury)) INNER JOIN TOWARY ON POZYCJEDOKUMENTU.SmbTow = TOWARY.Symbol WHERE Ilość*CenaNetto>30 AND TOWARY.Nazwa Like "*kawa*" AND DOKUMENTY.NrNabywcy=0 ) ; W1

Krok 2: tworzenie tabeli W2 SELECT NazwaWoj INTO W2 FROM ( SELECT DISTINCT WOJEWÓDZTWA.Nazwa AS NazwaWoj FROM ((((WOJEWÓDZTWA INNER JOIN MIEJSCOWOŚCI ON WOJEWÓDZTWA.Kod = MIEJSCOWOŚCI.KodWoj) INNER JOIN FIRMY ON MIEJSCOWOŚCI.Kod = FIRMY.KodMjc) INNER JOIN POZYCJEDOKUMENTU ON (DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy) AND (DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury)) INNER JOIN TOWARY ON POZYCJEDOKUMENTU.SmbTow = TOWARY.Symbol WHERE (TOWARY.Nazwa Like "*ryż*" OR TOWARY.Nazwa Like "*konserw*") AND DOKUMENTY.NrSprzedawcy=0 Union SELECT DISTINCT WOJEWÓDZTWA.Nazwa AS NazwaWoj FROM ((((WOJEWÓDZTWA INNER JOIN MIEJSCOWOŚCI ON WOJEWÓDZTWA.Kod = MIEJSCOWOŚCI.KodWoj) INNER JOIN FIRMY ON MIEJSCOWOŚCI.Kod = FIRMY.KodMjc) INNER JOIN DOKUMENTY ON FIRMY.Nr = DOKUMENTY.NrSprzedawcy) INNER JOIN POZYCJEDOKUMENTU ON (DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy) AND (DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury)) INNER JOIN TOWARY ON POZYCJEDOKUMENTU.SmbTow = TOWARY.Symbol WHERE (TOWARY.Nazwa Like "*ryż*" OR TOWARY.Nazwa Like "*konserw*") AND DOKUMENTY.NrNabywcy=0 ) ;

Krok 3: wyniki W1 W2 TABLE W1 UNION TABLE W2; 7. Utworzyć za pomocą kwerendy tabelę "K1" o schemacie {Numer, NazwaNabywcy} numerów i nazw firm, które kupowały od Naszej firmy kawę w lipcu 1992 roku albo chrupki kiedykolwiek oraz tabelę "K2" firm kupujących w Naszej firmie towary w puszkach (czyli w nazwie konserwy). Znaleźć firmy występujące w K1 i nie występujące w K2. (K1 K2) KROK 1: tworzenie K1 SELECT DISTINCT Nr AS Numer, FIRMY.Nazwa AS NazwaNabywcy INTO K1 FROM ((FIRMY INNER JOIN POZYCJEDOKUMENTU ON DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy AND DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury) INNER JOIN TOWARY ON POZYCJEDOKUMENTU.SmbTow = TOWARY.Symbol WHERE (Month([Data])=7 AND Year([data])=1992 AND Towary.Nazwa LIKE "*kawa*" AND NrNabywcy<>0) OR (Towary.Nazwa LIKE "*chrupki*" AND NrNabywcy<>0);

KROK 2: tworzenie K2 SELECT DISTINCT Nr AS Numer, FIRMY.Nazwa AS NazwaNabywcy INTO K2 FROM ((FIRMY INNER JOIN POZYCJEDOKUMENTU ON DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy AND DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury) INNER JOIN TOWARY ON POZYCJEDOKUMENTU.SmbTow = TOWARY.Symbol WHERE Towary.Nazwa LIKE "*konserwa*" AND NrNabywcy<>0; DELETE DISTINCTROW K1.* FROM K1 INNER JOIN K2 ON K1.Numer=K2.Numer; Usuwana część wspólna K1 I K2 to:: WYNIK w K1:

Uwaga: zad 7 i 8 idealne na kolokwium, a zad zbyt skomplikowane. 8. Znaleźć towary, które były sprzedawane przez Naszą firmę klientom z Wrocławia, ale nigdy nie były sprzedawane klientom z Krakowa. ({towary Wrocław94} {towary Kraków47}) Część wspólna: 43 towary Wynik:51 towarów w tabeli 8_wrocław

9. Znaleźć towary, które były kupione od Naszej firmy (na kwotę > 20 zł jednorazowo) przez klientów z Wrocławia i przez klientów z Krakowa. ({towar20złwrocław} {towary20złkraków}) SELECT M1.* FROM ( SELECT DISTINCT Symbol,Towary.Nazwa FROM (((FIRMY INNER JOIN POZYCJEDOKUMENTU ON DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy AND DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury) INNER JOIN TOWARY ON POZYCJEDOKUMENTU.SmbTow = TOWARY.Symbol) INNER JOIN MIEJSCOWOŚCI ON FIRMY.KodMjc = MIEJSCOWOŚCI.Kod WHERE (ilość*cenanetto>20 AND DOKUMENTY.NrSprzedawcy=0 And Miejscowości.Nazwa="Wrocław") )AS M1 INNER JOIN ( SELECT DISTINCT Symbol,Towary.Nazwa FROM (((FIRMY INNER JOIN POZYCJEDOKUMENTU ON DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy AND DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury) INNER JOIN TOWARY ON POZYCJEDOKUMENTU.SmbTow = TOWARY.Symbol) INNER JOIN MIEJSCOWOŚCI ON FIRMY.KodMjc = MIEJSCOWOŚCI.Kod WHERE (ilość*cenanetto>20 AND DOKUMENTY.NrSprzedawcy=0 And Miejscowości.Nazwa="Kraków") )AS M2 ON M1.Symbol=M2.Symbol ; 10. Do listy klientów, którzy kupili u nas kawy w sumie na kwotę > 100 dołączyć klientów, którzy kawy u nas nigdy nie kupili, ale każdy z nich kupił "pasztet" i "zupy choise". (klienci więcej niż 100 ((klienci pasztet klienci zupy choise) klienci kupujący kawę))