• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

zapytanie sql

Object Storage Arubacloud
0 głosów
373 wizyt
pytanie zadane 5 lutego 2020 w SQL, bazy danych przez robertos18 Obywatel (1,120 p.)

Majac tabele:
Ksiazki(nrkatalogowy,autor,tytuł,rokwydarzenia)
Studenci(pesel,nazwisko,nrtelefonu)
Wypozyczenia(pesel,nrkatalogowym,datawyp,datazwrotu)
klucz głowny(atrybuty podkreslone) , datawyp not null

Instrukcja ktora podaje liczbe ksiazek ktore zostaly wypozyczone i nie zostaly oddane

select count(pesel) from wypozyczenia
where datazwrotu is null;

brak pomysłow... Proszę o pomoc..

1 odpowiedź

0 głosów
odpowiedź 6 lutego 2020 przez XxPPDKxX Obywatel (1,400 p.)
wybrane 6 lutego 2020 przez robertos18
 
Najlepsza

Myślę ,że poprawne zapytanie powinno pokazywać relacje między tymi tabelami i wykluczać duplikujące się rekordy.

Myślę ,że tak:

SELECT DISTINCT COUNT(nrkatalogowym) FROM wypozyczenia,ksiazki WHERE
wypozyczenia.nrkatalogowym = ksizaki.nrkatalogowym AND datazwrotu is null;

 

komentarz 7 lutego 2020 przez robertos18 Obywatel (1,120 p.)
nie rozumiem po co polaczyles tabele wypozyczenia z ksiazki skoro z ksiazki nie korzystamy?
komentarz 7 lutego 2020 przez XxPPDKxX Obywatel (1,400 p.)
Masz racje wystarczyło by tylko wykluczyć duplikacje rekordów poprzez DISTINCT bo na pewno mógłby się powtórzyć nrkatalogowym. Co innego gdybyś chciał wypisać nazwy książek na podstawie wypożyczeń mój błąd ;)
komentarz 7 lutego 2020 przez robertos18 Obywatel (1,120 p.)

czyli bedzie dobrze? 

select distinct count(nrkatalogowym) from wypozyczenia
where datazwrotu is null ;

 

komentarz 7 lutego 2020 przez XxPPDKxX Obywatel (1,400 p.)

Myślę ,że tak samo distinct pozbywa ci się sytuacji gdzie ktoś wypożyczył tą samą książkę ,ale z drugiej strony myślę ,że bez tego też by dobrze zwracał wynik ponieważ nie może się tak zdarzyć ,że ta sama książka zostanie wypożyczona dwa razy i w obu przypadkach nie oddana jednocześnie. Więc taki zapis też będzie poprawny.

	
select count(nrkatalogowym) from wypozyczenia
where datazwrotu is null ;

Z tym ,że gdyby jakimś cudem system by przepuścił wypożyczenie tej samej książki to byś miał zakłamanie ponieważ oznaczało by to ,że dwa razy książka ta sama ci się liczy do wyniku :)

komentarz 7 lutego 2020 przez robertos18 Obywatel (1,120 p.)
dziękuje za odpowiedz, a wiesz moze jak napisac instrukcje ktora by podala mi pesel i nazwisko wszystkich sudentow ktorzy wypozyczyli najwiecej ksiazek? Totalnie sie zatrzymalem na tym zadaniu i nie mam pomyslu jak to napisac.. Pomoglbys mi ?
komentarz 7 lutego 2020 przez XxPPDKxX Obywatel (1,400 p.)
Masz jakąś baze danych na której to testujesz? Mogę spróbować wymyślić :)
komentarz 7 lutego 2020 przez robertos18 Obywatel (1,120 p.)
własnie o to chodzi ze nie mam tej bazy, po prostu mam tak podane tabele i musze pisac do nich rozwiazania ;)
komentarz 7 lutego 2020 przez XxPPDKxX Obywatel (1,400 p.)
Rozumiem. Kolejne zadanie to jest z wypisaniem peseli i nazwisk studentów a piszę ile ma ich być bo najwięcej może być top 3 lub top 5 lub więcej. Problem jest taki ,że trzeba policzyć ile każdy student wypożyczył i dopiero wyświetlić to ;D
komentarz 7 lutego 2020 przez robertos18 Obywatel (1,120 p.)
pytanie brzmi dokladnie tak:

Napisz instrukcje SQL ktora poda pesel i nazwisko wszystkich studentow ktorzy wypozyczyli najwiecej ksiazek.

Nie mam pojecia jak to napisac :D
komentarz 7 lutego 2020 przez XxPPDKxX Obywatel (1,400 p.)
Spróbuje coś napisać ,ale nie obiecuję bo sam się głowie teraz ;)
komentarz 7 lutego 2020 przez robertos18 Obywatel (1,120 p.)
no ok :)
komentarz 7 lutego 2020 przez XxPPDKxX Obywatel (1,400 p.)

Proponuje takie rozwiązanie robiłem na podstawie księgarni (bo miałem taką gotową bazę) ale podobne tabele były też trzy (klienci,zamowienia,ksiazki) więc sprawdziłem pod bazę danych tą co miałem następnie zmieniłem nazwy by pasowały do twojej bazy danych :)

SELECT studenci.pesel, studenci.nazwisko, COUNT(wypozyczenia.pesel) AS Liczba_Ksiazek FROM ksiazki,studenci,wypozyczenia WHERE studenci.pesel = wypozyczenia.pesel AND ksiazki.nrkatalogowy = wypozyczenia.nrkatalogowym GROUP BY klienci.pesel ORDER BY Liczba_Ksiazek DESC LIMIT 3

Ustawiłem ci limit do 3 uczniów ,ale możesz jak chcesz pokazać ich więcej :)

Podobne pytania

0 głosów
1 odpowiedź 55 wizyt
pytanie zadane 15 lutego w SQL, bazy danych przez pa_ka Nowicjusz (120 p.)
0 głosów
1 odpowiedź 171 wizyt
0 głosów
1 odpowiedź 261 wizyt
pytanie zadane 11 lipca 2023 w SQL, bazy danych przez W_potrzebie Nowicjusz (120 p.)

92,579 zapytań

141,432 odpowiedzi

319,663 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...