Mam problem z napisaniem kilku kwerend SQL do bazy danych Wampirów (w pierwszym poście podaję komendy Create Table i Insert).
Czy moglibyście mi pomóc?
Zad. 15. Znaleźć wampiry, które znają tyle samo języków obcych co posiadają sprawności. Wampir Liczba --------------- ---------- Bolek 1 Czerwony 2 Gacek 1 Komar 1 Opoj 3 Pijawka 1 Zyleta 1 Zadanie powinno zostać wykonane za pomocą pod zapytań a nie JOINów
Zad. 18. Wyświetlić uporządkowane malejąco trzy największe objęTOści donacji wraz z pseudonimami dawców, od których donacje pochodzą (zastosować podzapytanie skorelowane). Objetosc Dawca ---------- --------------- 703 Wytrawny 680 Miodzio 644 Miodzio
Zad. 19. Określić pseudonimy i grupy krwi dawców, od których pobierały krew wampiry znające język polski. Zadanie rozwiązać na dwa sposoby: wykorzystując wyłącznie podzapytania oraz wyłącznie złączenia relacji. W tym drugim przypadku wyświetlić dodatkowo pseudonimy wampirów pobierających krew. Wyjaśnić dlaczego w pierwszym przypadku BYło TO niemożliwe. Wyjaśnić także różnicę w wyniku. (Tylko wersję z podzapytaniami).[/manual] Jeszcze pytanie. Dlaczego TO zapytanie jest niepoprawne? [sql]-- zad 19 A SELECT dawcy.pseudo_dawcy "Dawca", dawcy.grupa_krwi "Grupa" FROM dawcy WHERE dawcy.pseudo_dawcy = ( SELECT donacje.pseudo_dawcy FROM donacje WHERE donacje.pseudo_wampira = ( SELECT wampiry.pseudo_wampira FROM wampiry WHERE wampiry.pseudo_wampira = ( SELECT jezyki_obce_w.pseudo_wampira FROM jezyki_obce_w WHERE jezyki_obce_w.jezyk_obcy = 'polski' ) ) );
Zad. 20. Sprawdzić, czy istniał rok, w którym do Rodziny wstąpił więcej niż jeden wampir. Wyświetlić lata wstąpienia i pseudonimy takich wampirów (wykorzystać podzapytanie). Wampir Rok wstapienia --------------- -------------- Komar 1911 Zyleta 1911
Z góry dziękuję za rozwiązania i drobne komentarze do nich

Pozdrawiam

Create table:
CREATE TABLE Wampiry( pseudo_wampira VARCHAR2(15) CONSTRAINT wa_pk PRIMARY KEY, wampir_w_rodzinie DATE NOT NULL, plec_wampira CHAR(1) NOT NULL CONSTRAINT wa_plec CHECK (plec_wampira IN ('K','M')), pseudo_szefa VARCHAR2(15) CONSTRAINT wa_fk_wa REFERENCES Wampiry(pseudo_wampira) ); CREATE TABLE Dawcy (pseudo_dawcy VARCHAR2(15) CONSTRAINT da_pk PRIMARY KEY, rocznik_dawcy NUMBER(4) NOT NULL, plec_dawcy CHAR(1) NOT NULL CONSTRAINT da_plec CHECK (plec_dawcy IN ('K','M')), grupa_krwi VARCHAR2(2) NOT NULL CONSTRAINT da_grupa CHECK (grupa_krwi IN ('0','A','B','AB'))); CREATE TABLE Sprawnosci (sprawnosc VARCHAR2(20) CONSTRAINT sp_pk PRIMARY KEY); CREATE TABLE Jezyki_obce (jezyk_obcy VARCHAR2(25) CONSTRAINT jo_pk PRIMARY KEY); CREATE TABLE Sprawnosci_w (pseudo_wampira VARCHAR2(15) CONSTRAINT sw_fk_wa REFERENCES Wampiry(pseudo_wampira), sprawnosc VARCHAR2(20) CONSTRAINT sw_fk_sp REFERENCES Sprawnosci(sprawnosc), sprawnosc_od DATE NOT NULL, CONSTRAINT sw_pk PRIMARY KEY (pseudo_wampira,sprawnosc)); CREATE TABLE Jezyki_obce_w (pseudo_wampira VARCHAR2(15) CONSTRAINT jw_fk_wa REFERENCES Wampiry(pseudo_wampira), jezyk_obcy VARCHAR2(25) CONSTRAINT jw_fk_jo REFERENCES Jezyki_obce(jezyk_obcy), jezyk_obcy_od DATE NOT NULL, CONSTRAINT jw_pk PRIMARY KEY (pseudo_wampira,jezyk_obcy)); CREATE TABLE Zlecenia( nr_zlecenia NUMBER(6) CONSTRAINT zl_pk PRIMARY KEY CONSTRAINT zl_n_z CHECK (nr_zlecenia>0), data_zlecenia DATE NOT NULL, pseudo_wampira VARCHAR2(15) NOT NULL CONSTRAINT zl_fk_wa REFERENCES Wampiry(pseudo_wampira) ); CREATE TABLE Donacje (nr_zlecenia NUMBER(6) CONSTRAINT do_fk_zl REFERENCES Zlecenia(nr_zlecenia), pseudo_dawcy VARCHAR2(15) CONSTRAINT do_fk_da REFERENCES Dawcy(pseudo_dawcy), data_oddania DATE NOT NULL, ilosc_krwi NUMBER(3) CONSTRAINT do_ilosc CHECK (ilosc_krwi>0), pseudo_wampira VARCHAR2(15) CONSTRAINT do_fk_wa REFERENCES Wampiry(pseudo_wampira), data_wydania DATE, CONSTRAINT do_pk PRIMARY KEY (nr_zlecenia,pseudo_dawcy), CONSTRAINT do_data_wyd_data_odd CHECK (data_wydania>=data_oddania));
Insert:
ALTER SESSION SET NLS_DATE_FORMAT='DD.MM.YYYY'; INSERT INTO Wampiry VALUES('Drakula','12.12.1217','M',NULL); INSERT INTO Wampiry VALUES('Opoj','07.11.1777','M','Drakula'); INSERT INTO Wampiry VALUES('Wicek','11.11.1721','M','Drakula'); INSERT INTO Wampiry VALUES('Baczek','13.04.1855','M','Opoj'); INSERT INTO Wampiry VALUES('Bolek','31.05.1945','M','Opoj'); INSERT INTO Wampiry VALUES('Gacek','21.02.1891','M','Wicek'); INSERT INTO Wampiry VALUES('Pijawka','03.11.1901','K','Wicek'); INSERT INTO Wampiry VALUES('Czerwony','13.09.1823','M','Wicek'); INSERT INTO Wampiry VALUES('Komar','23.07.1911','M','Wicek'); INSERT INTO Wampiry VALUES('Zyleta','23.09.1911','K','Opoj'); INSERT INTO Wampiry VALUES('Predka','29.03.1877','K','Drakula'); INSERT INTO Zlecenia VALUES(221,'04.07.2005','Opoj'); INSERT INTO Zlecenia VALUES(222,'04.07.2005','Baczek'); INSERT INTO Zlecenia VALUES(223,'17.07.2005','Bolek'); INSERT INTO Zlecenia VALUES(224,'22.07.2005','Opoj'); INSERT INTO Zlecenia VALUES(225,'01.08.2005','Pijawka'); INSERT INTO Zlecenia VALUES(226,'07.08.2005','Gacek'); INSERT INTO Dawcy VALUES('Slodka',1966,'K','AB'); INSERT INTO Dawcy VALUES('Miodzio',1983,'M','B'); INSERT INTO Dawcy VALUES('Gorzka',1958,'K','0'); INSERT INTO Dawcy VALUES('Lolita',1987,'K','0'); INSERT INTO Dawcy VALUES('Wytrawny',1971,'M','A'); INSERT INTO Dawcy VALUES('Okocim',1966,'M','B'); INSERT INTO Dawcy VALUES('Adonis',1977,'M','AB'); INSERT INTO Dawcy VALUES('Zywiec',1969,'M','A'); INSERT INTO Dawcy VALUES('Eliksir',1977,'M','0'); INSERT INTO Dawcy VALUES('Zenek',1959,'M','B'); INSERT INTO Dawcy VALUES('Zoska',1963,'K','0'); INSERT INTO Dawcy VALUES('Czerwonka',1953,'M','A'); INSERT INTO Donacje VALUES(221,'Slodka','04.07.2005',455,'Drakula','06.08.2005'); INSERT INTO Donacje VALUES(221,'Miodzio','04.07.2005',680,'Gacek','15.08.2005'); INSERT INTO Donacje VALUES(221,'Gorzka','05.07.2005',471,'Pijawka','11.08.2005'); INSERT INTO Donacje VALUES(221,'Lolita','05.07.2005',340,'Czerwony','21.08.2005'); INSERT INTO Donacje VALUES(222,'Wytrawny','07.07.2005',703,'Drakula','17.07.2005'); INSERT INTO Donacje VALUES(222,'Okocim','07.07.2005',530,'Komar','01.09.2005'); INSERT INTO Donacje VALUES(222,'Adonis','08.07.2005',221,'Zyleta','11.09.2005'); INSERT INTO Donacje VALUES(223,'Zywiec','17.07.2005',587,'Wicek','18.09.2005'); INSERT INTO Donacje VALUES(224,'Gorzka','22.07.2005',421,'Drakula','23.08.2005'); INSERT INTO Donacje VALUES(224,'Eliksir','25.07.2005',377,'Predka','26.07.2005'); INSERT INTO Donacje VALUES(225,'Zenek','04.08.2005',600,'Opoj','15.08.2005'); INSERT INTO Donacje VALUES(225,'Zoska','06.08.2005',450,NULL,NULL); INSERT INTO Donacje VALUES(226,'Czerwonka','10.08.2005',517,'Pijawka','30.09.2005'); INSERT INTO Donacje VALUES(226,'Miodzio','11.08.2005',644,NULL,NULL); INSERT INTO Sprawnosci VALUES('podryw'); INSERT INTO Sprawnosci VALUES('gorzala'); INSERT INTO Sprawnosci VALUES('kasa'); INSERT INTO Sprawnosci VALUES('przymus'); INSERT INTO Sprawnosci VALUES('niesmiertelnosc'); INSERT INTO Sprawnosci_w VALUES('Drakula','podryw','12.12.1217'); INSERT INTO Sprawnosci_w VALUES('Drakula','gorzala','12.12.1217'); INSERT INTO Sprawnosci_w VALUES('Wicek','kasa','11.11.1721'); INSERT INTO Sprawnosci_w VALUES('Wicek','przymus','07.01.1771'); INSERT INTO Sprawnosci_w VALUES('Opoj','podryw','07.11.1777'); INSERT INTO Sprawnosci_w VALUES('Czerwony','niesmiertelnosc','13.09.1823'); INSERT INTO Sprawnosci_w VALUES('Drakula','kasa','13.09.1823'); INSERT INTO Sprawnosci_w VALUES('Opoj','gorzala','11.12.1844'); INSERT INTO Sprawnosci_w VALUES('Baczek','gorzala','13.04.1855'); INSERT INTO Sprawnosci_w VALUES('Drakula','przymus','14.06.1857'); INSERT INTO Sprawnosci_w VALUES('Drakula','niesmiertelnosc','21.08.1858'); INSERT INTO Sprawnosci_w VALUES('Opoj','przymus','15.07.1861'); INSERT INTO Sprawnosci_w VALUES('Wicek','gorzala','19.01.1866'); INSERT INTO Sprawnosci_w VALUES('Predka','podryw','29.03.1877'); INSERT INTO Sprawnosci_w VALUES('Czerwony','kasa','03.02.1891'); INSERT INTO Sprawnosci_w VALUES('Gacek','kasa','21.02.1891'); INSERT INTO Sprawnosci_w VALUES('Pijawka','podryw','03.11.1901'); INSERT INTO Sprawnosci_w VALUES('Komar','gorzala','23.07.1911'); INSERT INTO Sprawnosci_w VALUES('Zyleta','przymus','23.09.1911'); INSERT INTO Sprawnosci_w VALUES('Bolek','gorzala','31.05.1945'); INSERT INTO Jezyki_obce VALUES('niemiecki'); INSERT INTO Jezyki_obce VALUES('wegierski'); INSERT INTO Jezyki_obce VALUES('bulgarski'); INSERT INTO Jezyki_obce VALUES('rosyjski'); INSERT INTO Jezyki_obce VALUES('portugalski'); INSERT INTO Jezyki_obce VALUES('francuski'); INSERT INTO Jezyki_obce VALUES('angielski'); INSERT INTO Jezyki_obce VALUES('polski'); INSERT INTO Jezyki_obce VALUES('hiszpanski'); INSERT INTO Jezyki_obce VALUES('czeski'); INSERT INTO Jezyki_obce VALUES('wloski'); INSERT INTO Jezyki_obce VALUES('szwedzki'); INSERT INTO Jezyki_obce_w VALUES('Drakula','niemiecki','12.12.1217'); INSERT INTO Jezyki_obce_w VALUES('Drakula','wegierski','12.12.1217'); INSERT INTO Jezyki_obce_w VALUES('Drakula','bulgarski','03.04.1455'); INSERT INTO Jezyki_obce_w VALUES('Wicek','rosyjski','11.11.1721'); INSERT INTO Jezyki_obce_w VALUES('Opoj','portugalski','07.11.1777'); INSERT INTO Jezyki_obce_w VALUES('Czerwony','francuski','13.09.1823'); INSERT INTO Jezyki_obce_w VALUES('Drakula','angielski','13.09.1823'); INSERT INTO Jezyki_obce_w VALUES('Wicek','polski','18.08.1835'); INSERT INTO Jezyki_obce_w VALUES('Opoj','hiszpanski','12.03.1851'); INSERT INTO Jezyki_obce_w VALUES('Baczek','czeski','13.04.1855'); INSERT INTO Jezyki_obce_w VALUES('Wicek','niemiecki','11.06.1869'); INSERT INTO Jezyki_obce_w VALUES('Wicek','wloski','14.03.1873'); INSERT INTO Jezyki_obce_w VALUES('Predka','czeski','29.03.1877'); INSERT INTO Jezyki_obce_w VALUES('Opoj','polski','13.09.1883'); INSERT INTO Jezyki_obce_w VALUES('Czerwony','rosyjski','23.11.1888'); INSERT INTO Jezyki_obce_w VALUES('Gacek','polski','21.02.1891'); INSERT INTO Jezyki_obce_w VALUES('Predka','niemiecki','07.06.1894'); INSERT INTO Jezyki_obce_w VALUES('Baczek','angielski','04.12.1899'); INSERT INTO Jezyki_obce_w VALUES('Pijawka','angielski','03.11.1901'); INSERT INTO Jezyki_obce_w VALUES('Komar','szwedzki','23.07.1911'); INSERT INTO Jezyki_obce_w VALUES('Zyleta','angielski','23.09.1911'); INSERT INTO Jezyki_obce_w VALUES('Bolek','francuski','31.05.1945'); SELECT * FROM Wampiry; SELECT * FROM Zlecenia; SELECT * FROM Dawcy; SELECT * FROM Donacje; SELECT * FROM Sprawnosci; SELECT * FROM Sprawnosci_w; SELECT * FROM Jezyki_obce; SELECT * FROM Jezyki_obce_w;