Zmienne dowiązane

0

Jak będzie wyglądać zapytanie do bazy danych z wykorzystaniem zmiennych dowiązanych i bloków anonimowych jeżeli chcemy wyszukać tytuł i autora najcześciej wypozyczanej pozycji w księgozbiorze, mając taki schemat bazy danych

  • Czytelnicy (nr_czyt, nr_dokum, nazwisko, imie, data_ur, miasto, ulica, data_zapisu)
  • Pozycje (isbn, autor, tytul, wydawnictwo, wydanie, streszczenie)
  • Woluminy ( nr_kat, # isbn, data_wprowadzenia, data_likwidacji, status, cena_zak)
  • Wypozyczenia (nr_wyp, # nr_czyt, # nr_kat, data_wyp, data_zwr)
  • Rezerwacje (# nr_czyt, # nr_kat, data_rez)
  • Prolongaty (# nr_wyp, data_prol)
1

Nie podałeś nawet jaka to baza danych, nie podałeś DDL tabel aby było nam łatwiej przeanalizować sytuację, nie podałeś nawet fragmentu swojego zapytania więc wnioskuję, że potrzebujesz gotowca. Nie mając odpowiednich informacji na moje oko będzie to coś w stylu

select top 1 count(nr_kat) from wypozyczenia group by nr_kat order by 1 desc
0

Wersja bazy wskazuje mi na dystrybucję Oracle - czego nie podałeś. Co do zmiennych dowiązanych ... to musisz je sobie zadeklarować w bloku PL/SQL czyli tworzysz np zmienną rok i dodajesz do zapytania warunek where ze zmienną. Może to być też parametr. Co do "bloku anonimowego" to mniemam, że chodzi o coś takiego:

DECLARE
  -- deklaracje obiektów PL/SQL jak zmienne, stałe, wyjątki, procedury, funkcje
  zmienna_z_bloku_declare integer;
BEGIN
   zmienna_z_bloku_declare := 2016;
   SELECT  COUNT(nr_kat) FROM wypozyczenia WHERE data_wyp = zmienna_z_bloku_declare GROUP BY nr_kat ORDER BY 1 DESC
EXCEPTION
   when others then 
     raise_application_error(-20010,'Zonk')
END;

oczywiście jest to przykład bez sprawdzania i z pewnością nie zadziała (z pewnością warunek na datę go zaboli) do tego możesz jeszcze pokombinować z rownum=1 aby zwrócić tylko 1 rekord

1 użytkowników online, w tym zalogowanych: 0, gości: 1