złozone zapytania sql

0

Czy mógłby ktos zerknąc okiem na to? wrzucałem juz podobny post tylko ze teraz zrobiłem inne rozwiązania które wydają sie bardziej przyjazne dla mnie..

Mam tabele:

Ksiazki(nrkat,autor,tytuł,rokwydania)
Studenci(pesel,nazwisko,nrtelefonu)
Wypozyczenia(pesel,nrkat,datawyp,datazwrotu)

Znajdz liczbe ksiazek ktore zostały wypozyczone i nie zostały oddane:

Select count(nrkat) from wypozyczenia
where datazwrotu NOT IN (Select datazwrotu from wypozyczenia)

Znajdz pesel, nazwisko wszystkich studentow ktorzy wypozyczyli najwiecej ksiazek:

select s.pesel, s.nazwisko from studenci s
join wypozyczenia w on s.pesel=w.pesel
group by s.pesel, s.nazwisko
having count(w.nrkat) = (Select count(nrkat) AS ilosc
from wypozyczenia w group by w.nrkat
order by ilosc desc)
order by s.pesel ASC, s.nazwisko ASC;

Znadz autora i tytuł wszystkich ksiazek ktore nie zostaly jeszcze wypozyczone:

Select autor, tytuł from ksiazki
where nrkat NOT IN(Select nrkat from wypozyczenia);

Nadaj uprawnienia select i update do tabel wypozyczenia uzytkownikowi pracownik1

GRANT select, update ON wypozyczenia TO pracownik1;
1

Znajdz liczbe ksiazek ktore zostały wypozyczone i nie zostały oddane:

Select count(nrkat) from wypozyczenia
where datazwrotu is null  --zakladam ze jak nie ma daty zwrotu to nie oddał?
0

chyba tak, danych w tabeli nie posiadam gdyz jedyne dane jakie mam to te co podałem

Select count(nrkat) from wypozyczenia
where datazwrotu is null

jest tym samym co : ?

Select count(nrkat) from wypozyczenia
where datazwrotu NOT IN (Select datazwrotu from wypozyczenia)
1

Znajdz pesel, nazwisko wszystkich studentow ktorzy wypozyczyli najwiecej ksiazek:

twoje zapytanie zwróci wszystkich studentów posortowanych od największej liczby wypożyczeń
ja dla takiego zadania wyszukałbym max wypożyczeń i wyświetlił wszystkich studentów którzy mają tylko ten max :)

3 i 4 zadanie raczej ok

0

cos w tym stylu ?

select 
  s.pesel,s.nazwisko
  count(nrkat) ilosc_wypozyczen
from 
  studenci s join wypozyczenia w on s.pesel=w.pesel 
group by 
  s.pesel,s.nazwisko 
having count(nrkat)=(
  select 
    max(ilosc_wypozyczen)
  from 
   (select count(nrkat) ilosc_wypozyczen from wypozyczenia group by pesel)
)

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