Zad 2 Znaleźć miejscowości, z których klienci kupili w Naszej firmie każdy z towarów: "Zupy CHOISE","Orzeszki solone", ""Kawa BURG" (niekoniecznie każdy z klientów każdy z towarów!). Krok 1. SELECT Symbol AS KS INTO Dzielnik FROM Towary WHERE (Nazwa='Orzeszki solone') OR (Nazwa = 'Zupy CHOISE') OR (Nazwa = 'Kawa BURG'); Krok 2. SELECT DISTINCT KodMjc AS KR, KS INTO Dzielna FROM ((Firmy INNER JOIN Dokumenty ON Firmy.Nr=Dokumenty.NrNabywcy) INNER JOIN PozycjeDokumentu ON (PozycjeDokumentu.NrSprzedawcy = Dokumenty.Nrsprzedawcy) AND (Dokumenty.NrFaktury=PozycjeDokumentu.NrFaktury)) INNER JOIN Dzielnik ON PozycjeDokumentu.SmbTow=Dzielnik.KS SELECT DISTINCT Dzielna.KR, Miejscowości.Nazwa, Województwa.Nazwa FROM (Dzielna INNER JOIN Miejscowości ON Dzielna.KR = Miejscowości.KOD) INNER JOIN Województwa ON Miejscowości.KodWoj=Województwa.Kod;
Zad 3 Znaleźć towary, które były sprzedawane przez Naszą firmę klientom w każdej z miejscowości: Wrocław, Bytom, Białystok. Krok 1. SELECT DISTINCT Kod AS KS INTO Dzielnik FROM Miejscowości WHERE Nazwa="Wrocław" or Nazwa="Bytom" or Nazwa="Białystok"; Krok 2. SELECT DISTINCT SmbTow AS KR, KS INTO Dzielna FROM ((Firmy INNER JOIN Dokumenty ON Firmy.Nr=Dokumenty.NrNabywcy) INNER JOIN PozycjeDokumentu ON (Dokumenty.NrFaktury=PozycjeDokumentu.NrFaktury) AND (PozycjeDokumentu.NrSprzedawcy = Dokumenty.Nrsprzedawcy)) INNER JOIN Dzielnik ON Dzielnik.KS=FIrmy.KodMjc SELECT DISTINCT Towary.Symbol, Towary.Nazwa FROM Dzielna INNER JOIN Towary ON Dzielna.KR = Towary.Symbol;
Zad 4 Znaleźć dokumenty, w których występuje każdy z towarów: "Kawa BURG", "Orzeszki solone", "Zupy CHOISE" SELECT Symbol AS KS INTO Dzielnik FROM Towary WHERE (Nazwa='Orzeszki solone') OR (Nazwa = 'Zupy CHOISE') OR (Nazwa = 'Kawa BURG'); UWAGA! W tym zadaniu klucz w dzielnej jest złożony z dwóch pól: NrSprzedawcy (KR1) i NrFaktury (KR2) SELECT DISTINCT NrSprzedawcy AS KR1, NrFaktury AS KR2, KS INTO DZIELNA FROM PozycjeDokumentu INNER JOIN Dzielnik ON PozycjeDokumentu.Smbtow = DZIELNIK.KS; Krok 3. ILOCZYN KARTEZJAŃSKI SELECT DISTINCT KR1, KR2, Dzielnik.KS INTO Iloczyn FROM Dzielnik, Dzielna; Krok 4. ILOCZYN KARTEZJAŃSKI DZIELNA (złączenie KR1, KR2 i KRS) DELETE DISTINCTROW Iloczyn.* FROM Dzielna INNER JOIN Iloczyn ON (Dzielna.KS=Iloczyn.KS) AND (Dzielna.KR1=Iloczyn.KR1) AND (Dzielna.KR2=Iloczyn.KR2); Krok 5. DZIELNA - ILOCZYN KARTEZJAŃSKI (złączenie KR1 i KR2 ) DELETE DISTINCTROW Dzielna.* FROM Dzielna INNER JOIN Iloczyn ON (Dzielna.KR1=Iloczyn.KR1) AND (Dzielna.KR2=Iloczyn.KR2); SELECT DISTINCT KR1 AS WYSTAWIŁ, KR2 AS Numer_Faktury FROM DZIELNA INNER JOIN FIRMY ON Dzielna.Kr1=FIRMY.Nr;
Zad 5. Podać nazwy firm, które kupowały u nas każdy z towarów sprzedanych nam na podstawie faktury numer R/45/H/92. SELECT DISTINCT SmbTow AS KS FROM POZYCJEDOKUMENTU WHERE NrFaktury="R/45/H/92" AND NrSprzedawcy<>0; SELECT DISTINCT Nr AS KR, KS INTO DZIELNA FROM ((DZIELNIK INNER JOIN POZYCJEDOKUMENTU ON DZIELNIK.KS = POZYCJEDOKUMENTU.SmbTow) INNER JOIN DOKUMENTY ON POZYCJEDOKUMENTU.NrSprzedawcy = DOKUMENTY.NrSprzedawcy AND (POZYCJEDOKUMENTU.NrFaktury = DOKUMENTY.NrFaktury) INNER JOIN FIRMY ON DOKUMENTY.NrNabywcy = FIRMY.Nr SELECT DISTINCT KR, Nazwa FROM DZIELNA INNER JOIN FIRMY ON DZIELNA.KR = FIRMY.Nr;
Zad 6. Znaleźć dni, w których Nasza firma sprzedawała każdy z trzech najlepiej sprzedających się (pod względem sumarycznej kwoty) towarów. SELECT TOP 3 SmbTow AS KS INTO DZIELNIK FROM Dokumenty INNER JOIN PozycjeDokumentu ON Dokumenty.NrSprzedawcy = PozycjeDokumentu.NrSprzedawcy AND Dokumenty.NrFaktury = PozycjeDokumentu.NrFaktury WHERE Dokumenty.NrSprzedawcy=0 GROUP BY SmbTow ORDER BY Sum(Ilość*CenaNetto) DESC; SELECT DISTINCT Data AS KR, Dzielnik.KS INTO DZIELNA FROM (DOKUMENTY INNER JOIN POZYCJEDOKUMENTU ON (DOKUMENTY.NrFaktury = POZYCJEDOKUMENTU.NrFaktury) AND (DOKUMENTY.NrSprzedawcy = POZYCJEDOKUMENTU.NrSprzedawcy)) INNER JOIN Dzielnik ON POZYCJEDOKUMENTU.SmbTow = Dzielnik.KS WHERE DOKUMENTY.NrSprzedawcy=0; SELECT DISTINCT DZIELNA.KR AS [Szukane daty] FROM DZIELNA;
Zad 7. Znaleźć klientów, którzy kupili u nas każdy z towarów wymienionych w dokumentach z dnia 1992-10-09 lub z dnia 1992-07-23. przy braku kontroli kto wystawiał dokument 6 towarów; wynik: brak nabywców wszystkich towarów - przy założeniu WHERE Dokumenty.NrSprzedawcy=0 tylko 5 towarów; wynik niepusty SELECT SmbTow AS KS INTO DZIELNIK FROM Dokumenty INNER JOIN PozycjeDokumentu ON Dokumenty.NrSprzedawcy = PozycjeDokumentu.NrSprzedawcy AND Dokumenty.NrFaktury = PozycjeDokumentu.NrFaktury WHERE Dokumenty.NrSprzedawcy=0 AND (Data=#1992-10-09# OR Data=#1992-07-23#); SELECT DISTINCT NrNabywcy AS KR, DZIELNIK.KS INTO DZIELNA FROM (DZIELNIK INNER JOIN POZYCJEDOKUMENTU ON DZIELNIK.KS = POZYCJEDOKUMENTU.SmbTow) INNER JOIN DOKUMENTY ON POZYCJEDOKUMENTU.NrSprzedawcy = DOKUMENTY.NrSprzedawcy AND POZYCJEDOKUMENTU.NrFaktury = DOKUMENTY.NrFaktury SELECT DISTINCT KR, Nazwa FROM DZIELNA INNER JOIN FIRMY ON DZIELNA.KR = FIRMY.Nr;
Zad 8. Znaleźć towary, które były u nas kupowane przez każdego z klientów z województwa opolskiego. Krok 1 DZIELNIK przy założeniu, ze klienci to nabywcy lub sprzedawcy - 4 firmy (mało w tym sensu) SELECT KS INTO DZIELNIK FROM ( SELECT DISTINCT Nr AS KS 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.NrNabywcy) WHERE WOJEWÓDZTWA.Nazwa LIKe "opolskie" AND NrNabywcy<>0 Union SELECT DISTINCT Nr AS KS 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) WHERE WOJEWÓDZTWA.Nazwa LIKE "opolskie" AND NrNabywcy=0 ) AS [nabywcy i sprzedawcy]; przy założeniu, że klienci to tylko nabywcy te same j.w. 4 firmy SELECT DISTINCT Nr AS KS INTO DZIELNIK 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.NrNabywcy) WHERE WOJEWÓDZTWA.Nazwa LIKe "opolskie" AND NrNabywcy<>0; Krok 2 DZIELNA SELECT DISTINCT SmbTow AS KR, Dzielnik.KS INTO Dzielna FROM (Dokumenty INNER JOIN PozycjeDokumentu ON Dokumenty.Nrsprzedawcy = PozycjeDokumentu.NrSprzedawcy AND Dokumenty.NrFaktury = PozycjeDokumentu.NrFaktury) INNER JOIN Dzielnik ON Dokumenty.NrNabywcy = Dzielnik.KS ; Dzielna jest pusta - wyniku brak