Polecenie SQL zliczające ilość wystąpień wierszy

Polecenie SQL zliczające ilość wystąpień wierszy
S2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 33
0

Witam, mam pewien problem z wyciągnieciem danych z poniższej bazy.
Chodzi o to, że mam pobrać nazwisko i imie pacjentów pomiędzy 40 a 50 rokiem życia którzy mieli przynajmniej 3 wizyty u ortopedy.

Moja baza z danymi wygląda tak:

0f22a00b8f.png
Zapytanie które na razie mam to coś takiego:

Kopiuj
select pacjent.ID_pacjent, pacjent.imie, pacjent.nazwisko from pacjent 
inner join wizyta on pacjent.ID_pacjent = wizyta.ID_pacjent inner join lekarz on wizyta.ID_lekarz = lekarz.ID_lekarz 
inner join lekarz_specjalnosc on lekarz.ID_lekarz = lekarz_specjalnosc.ID_lekarz 
inner join specjalnosc on lekarz_specjalnosc.ID_specjalnosc = specjalnosc.ID_specjalnosc
where specjalnosc.nazwa = 'ortopeda' and pacjent.wiek between 40 and 50; 

i zwaraca mi coś takiego:
c8374cb23b.png

Główny problem mój leży w tym ze nie wiem jak to policzyć żeby mi wyświetliło po prostu samo "Adam Kowalski" - gdzie i jak warunek zliczania dać?

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
1
Kopiuj
select pacjent.ID_pacjent, pacjent.imie, pacjent.nazwisko from pacjent 
inner join wizyta on pacjent.ID_pacjent = wizyta.ID_pacjent inner join lekarz on wizyta.ID_lekarz = lekarz.ID_lekarz 
inner join lekarz_specjalnosc on lekarz.ID_lekarz = lekarz_specjalnosc.ID_lekarz 
inner join specjalnosc on lekarz_specjalnosc.ID_specjalnosc = specjalnosc.ID_specjalnosc
where specjalnosc.nazwa = 'ortopeda' and pacjent.wiek between 40 and 50
group by 1,2,3 
having Count(*)>=3; 
S2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 33
0

Bedę miał jeszcze jedno pytanie, chciałbym wybrać lekarza który miał nawięcej wizyt.
Poniższym poleceniem dostaje odp ile każdy z lekarzy miał wizyt a da się idąc tym trope wybrać wiersz gdzie ta wartość jest maksymalna?

Kopiuj
select *,count(wizyta.ID_wizyta) as IloscOdwiedzin from lekarz inner join wizyta on lekarz.ID_lekarz = wizyta.ID_lekarz
group by lekarz.ID_lekarz;

7b549f031d.png

FI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 88
1

Oczywiście, że da się, albo w havingu. Można też sortowaniem czyli w SELECT dać TOP 1 a na końcu ORDER BY TwojaKolumna DESC przy czym ta opcja jest najmniej poprawna ze względu na operacje sortowania.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.