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

Zadanie z SQL, procedury

Object Storage Arubacloud
0 głosów
540 wizyt
pytanie zadane 26 listopada 2016 w Rozwój zawodowy, nauka, praca przez Jiin Obywatel (1,390 p.)
Witam, mam takie oto zadanie:
 https://wklej.to/rkP1N

Nie jest ono co prawda moje ale obiecałem pomóc i teraz nie mam pojęcia jak się za to zabrać, tzn. jak poprawnie zdefiniować procedury, wgl jak zapisać zapytania w nich. Mógłby mi ktoś pomóc? Byłbym bardzo wdzięczny. Próbowałem już nawet zapisać jako plik .sql i wrzucić do PhpMyAdmin po czym zrobić sobie kwerendę i polecenia które mi wyskoczą wrzucić do SSMS, ale odrazu wyrzuca mi syntax error. Używana wersja SQL server to 2014.

1 odpowiedź

+1 głos
odpowiedź 26 listopada 2016 przez jeremus Maniak (59,720 p.)
--- poniżej przykład dla pierwszy wolny termin
create procedure wolny_termin  @lekarz_nazw as varchar(50),@lekarz_imie as varchar(50)
as
begin
   select top 1 l.nazwisko,l.imie,cast(t.odgodziny as date) as data,format(t.odgodziny,'hh:mm') as czas,g.nazwa as nazwa_gabinetu from terminy t,lekarze l,gabinety g
   where l.nazwisko=@lekarz_nazw and l.imie=@lekarz_imie
         and t.idlekarza=l.id and t.idgabinetu=g.id 
--- ten warunek do usuniecia lub nie w zaleznosci co autor bazy mial na mysli w tab.terminy,wizyty
--		 and t.id not in ( select idterminu from wizyty)
		 order by t.odgodziny
end


go

--- wykonanie procedury

exec  wolny_termin 'Konrad',  'Marek'

-- wynik

nazwisko    imie    data    czas    nazwa_gabinetu
Konrad    Marek    2016-01-05    12:00    9

 

 

komentarz 28 listopada 2016 przez Jiin Obywatel (1,390 p.)

Okej, zrobiłem sobie na podstawie tej procedury drugą,

  create procedure obsluzeni  @od as varchar(50), @do as varchar(50)
as
begin
   select COUNT(*)
    FROM wizyty w, stany s
    WHERE (w.godzina BETWEEN @od and @do)  and s.stan = 'z' 
end
 go

 

Ale przy trzeciej gdzie mam znaleźć lekarza który przyjął najwięcej osób wyrzuca mi już błąd:

 create procedure najlepszy_lekarz  @od as varchar(50), @do as varchar(50)
as
begin

SELECT *, COUNT(*) AS total FROM wizyty w, stany s, terminy t
WHERE (w.godzina BETWEEN @od and @do)  and s.stan = 'z' 
 GROUP BY t.idlekarza ORDER BY total DESC LIMIT 1

 
end
 go

 

Mógłby ktoś pomóc jak wyciągnąc id lekarza z największą liczbą obsłużonych wizyt?

komentarz 28 listopada 2016 przez jeremus Maniak (59,720 p.)
create procedure best_lekarz  @miesiac as int, @rok as int
as
begin
   select  l.nazwisko+' '+l.imie,count(*) as ile_wizyt 
   from terminy t,lekarze l,wizyty w
   where year(w.godzina)=@rok and month(w.godzina)=@miesiac
         and t.idlekarza=l.id and t.id=w.idterminu
		 group by l.nazwisko+' '+l.imie
		 order by count(*) desc
end


go


--- wywolanie

exec best_lekarz 1 , 2016

--- wynik

(No column name)    ile_wizyt
Herbut Igor    2
Słowacki Juliusz    2
Bosy Karol    2
Chrząszcz Zbigniew    1
Szymborska Wisława    1
Tuwim Julian    1
Waldowski Harry    1
Konrad Marek    1
Kowalski Paweł    1
Miłosz Czesław    1

Podobne pytania

–1 głos
1 odpowiedź 503 wizyt
pytanie zadane 26 kwietnia 2017 w SQL, bazy danych przez Ugari Nowicjusz (200 p.)
0 głosów
1 odpowiedź 2,039 wizyt
pytanie zadane 3 grudnia 2017 w Systemy operacyjne, programy przez rarituto Nowicjusz (150 p.)
+1 głos
1 odpowiedź 192 wizyt

92,580 zapytań

141,433 odpowiedzi

319,665 komentarzy

61,965 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!

...