ZAPYTANIA SQL ORACLE

0

Witam, potrzebuję nakierowania czy robię dobrze, otóż mam do stworzenia takie skrypty:
Przykładowa treść laboratorium:

  1. Wyświetl wszystkie wypożyczenia w postaci: tytuł książki, nazwisko najważniejszego autora, nazwisko czytelnika, data wypożyczenia w formacie stosowanym w USA (miesiąc/dzień/rok) oraz data zwrotu w formacie stosowanym w Polsce (dzień.miesiąc.rok).
  2. Wyświetl nazwisko, imię czytelnika, nazwę książki oraz karę (20 gr za każdy dzień) dla czytelników przetrzymujących książki (jeżeli minęło więcej niż trzy miesiące od daty wypożyczenia).
  3. Wyświetl informacje o ostatnim wypożyczeniu.
  4. Wyświetl nazwisko i imię czytelnika oraz średni czas pomiędzy datą zwrotu, a datą wypożyczenia (dla książek, które zostały zwrócone).
  5. Wyświetl nazwisko, imię czytelnika oraz sumaryczną karę za wszystkie przetrzymane książki danego czytelnika.
  6. Wyświetl wszystkich pracowników o liczbie wypożyczeń poniżej 0.75 * średnia liczba wypożyczeń przypadających na osobę.
  7. Sprawdź czy istnieją czytelnicy i pracownicy o takich samych nazwiskach i imionach.
  8. Podaj przykład użycia operatora ANY.
  9. Wyświetl dla każdego wydawnictwa miesięczne zestawienie za okres ostatnich kilku lat zawierające informacje o kwocie na jaką w każdym miesiącu zakupione zostały książki z każdego wydawnictwa.
    10.Wyświetl nazwisko i imię autora wraz z liczbą napisanych przez niego książek.

rozwiązanie:
SELECT tytul_ksiazki,nazwisko_autora_gl,nazwisko_czytelnika,data_wypozyczenia
FROM Kasiazki, Autorzy_Ksiazek, Czytelnicy
NVL(data_zwrotu,sysdate)-data_wypozyczenia AS format w USA
ORDER BY nazwisko_czytelnika, tytul_ksiazki

0

Jak mniemam dostałeś jakąś strukturę do tych zapytań. Stwórz tabele i uzupełnij danymi na: http://sqlfiddle.com/#!4 to spróbujemy podpowiedzieć ;)

0
CREATE TABLE wydawnictwa(
    id_wydawnictwo NUMBER(10) CONSTRAINT wydawnictwo_pk PRIMARY KEY,
    nazwa VARCHAR2(20) CONSTRAINT wydawnictwo_nazwa_u UNIQUE,
    ulica VARCHAR2(30),
    nr_domu VARCHAR2(8),
    nr_lokalu VARCHAR2(4),
    kod_pocztowy VARCHAR2(6),
    poczta VARCHAR2(20)
)
/
--
CREATE TABLE ksiazki(
    id_ksiazka NUMBER(6) CONSTRAINT ksiazka_pk PRIMARY KEY,
    tytul VARCHAR2(30) CONSTRAINT ksiazka_tytul_nn NOT NULL
)
/
--
CREATE TABLE autorzy(
    id_autor NUMBER(6) CONSTRAINT autor_pk PRIMARY KEY,
    nazwisko VARCHAR2(20) CONSTRAINT autor_nazwisko_nn NOT NULL,
    imie VARCHAR2(20) CONSTRAINT autor_imie_nn NOT NULL
)
/
-- 
CREATE TABLE autorzy_ksiazek(
    waznosc NUMBER(2),
--  najwazniejszy autor ma waznosci o wartosci 1, kolejny 2, itd.
    id_ksiazka NUMBER(6) CONSTRAINT ak_ksiazka_fk REFERENCES ksiazki(id_ksiazka),
    id_autor NUMBER(6) CONSTRAINT ak_autor_fk REFERENCES autorzy(id_autor),
    CONSTRAINT ak_pk PRIMARY KEY (id_ksiazka, id_autor)
)
/
--
CREATE TABLE egzemplarze(
    id_egzemplarz NUMBER(6) CONSTRAINT egzemplarz_pk PRIMARY KEY,
    id_ksiazka NUMBER(6) CONSTRAINT egzemplarz_ksiazka_fk REFERENCES ksiazki(id_ksiazka),
    id_wydawnictwo NUMBER(6) CONSTRAINT egzemplarz_wydawnictwo_fk REFERENCES wydawnictwa(id_wydawnictwo),
--  informacja o wydaniu moze byc przedstawiona w postaci oddzielnej relacji
    rok_wydania NUMBER(4) CONSTRAINT egzemplarz_rok_wydania_nn NOT NULL,
--  stan = 0 oznacza, ze dany egzemplarz jest wypozyczony
--  stan = 1 oznacza, ze dany egzemplarz jest dostepny
--  informacje o stanie egzemplarza mozna takze uzyskac na podstawie wypozyczen
    stan NUMBER(1) DEFAULT 1 CONSTRAINT egzemplarz_stan_ck CHECK (stan = 0 OR stan = 1)
)
/
--
CREATE TABLE pracownicy(
    id_pracownik NUMBER(6) CONSTRAINT pracownik_pk PRIMARY KEY,
    nazwisko VARCHAR2(20) CONSTRAINT pracownik_nazwisko_nn NOT NULL,
    imie VARCHAR2(20) CONSTRAINT pracownik_imie_nn NOT NULL,
    wynagrodzenie NUMBER(8,2) DEFAULT(10000),
--  informacja o stanowisku moze byc przedstawiona w postaci oddzielnej relacji
    stanowisko VARCHAR2(20) DEFAULT 'Bibliotekarz'
)
/
--
CREATE TABLE faktury(
    id_faktura NUMBER(6) CONSTRAINT faktura_pk PRIMARY KEY,
    id_wydawnictwo NUMBER(10) CONSTRAINT faktura_wydawnictwo_fk REFERENCES wydawnictwa(id_wydawnictwo),
    id_pracownik NUMBER(6) CONSTRAINT faktura_pracownik_fk REFERENCES pracownicy(id_pracownik),
    data date DEFAULT(sysdate)
--  faktura moze zawierac takze informacje o sumie
)
/
--
CREATE TABLE pozycje_faktur(
    id_pozycja_faktury NUMBER(4) CONSTRAINT pf_pk PRIMARY KEY,
--  jezeli jak klucz glowny zostaloby uzyte (id_faktura, id_ksiazka)
--  to na jednej fakturze moglibysmy miec tylko jedno wydanie danej ksiazki
    id_faktura NUMBER(6) CONSTRAINT pf_faktura_fk REFERENCES faktury(id_faktura),
    id_ksiazka NUMBER(6) CONSTRAINT pf_ksiazka_fk REFERENCES ksiazki(id_ksiazka),
    rok_wydania NUMBER(6) CONSTRAINT pf_rok_wydania_nn NOT NULL,
    ilosc NUMBER(6) CONSTRAINT pf_ilosc_nn NOT NULL,
    cena NUMBER(8,2) CONSTRAINT pf_cena_nn NOT NULL
)
/   
--
CREATE TABLE czytelnicy(
    id_czytelnik NUMBER(10) CONSTRAINT czytelnik_pk PRIMARY KEY,
    nazwisko VARCHAR2(30) CONSTRAINT czytelnik_nazwisko_nn NOT NULL,
    imie VARCHAR2(30) CONSTRAINT czytelnik_imie_nn NOT NULL,
    ulica VARCHAR2(30),
    nr_domu VARCHAR2(8),
    nr_lokalu VARCHAR2(4),
    kod_pocztowy VARCHAR2(6),
    poczta VARCHAR2(20),
    kara NUMBER(6)
)
/
--
CREATE TABLE wypozyczenia(
    id_wypozyczenie NUMBER(10) CONSTRAINT wypozyczenie_pk PRIMARY KEY,
    id_czytelnik NUMBER(10) CONSTRAINT wypozyczenie_czytelnik_fk REFERENCES czytelnicy(id_czytelnik),
    id_egzemplarz NUMBER(6) CONSTRAINT wypozyczenie_egzemplarz_fk REFERENCES egzemplarze(id_egzemplarz),
-- Pracownik wypozyczajacy ksiazke
    id_pracownik_wyp NUMBER(6) CONSTRAINT wypozyczenie_pracownik_wyp_fk REFERENCES pracownicy(id_pracownik),
    data_wypozyczenia date DEFAULT(sysdate),
-- Pracownik przyjmujacy zwracana ksiazke
    id_pracownik_zwr NUMBER(6) CONSTRAINT wypozyczenie_pracownik_zwr_fk REFERENCES pracownicy(id_pracownik),
    data_zwrotu date DEFAULT(NULL)
)
/
0

tak jak prosiles oto i tabele

0
TwardyBorsuk20 napisał(a):

tak jak prosiles oto i tabele

poprosiłem abyś założył tabele i uzupełnił danymi na stronie, którą podałem :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.