Pomoc przy utworzeniu zapytań do bazy

0

Posiadam następujący schemat bazy danych:

http://zapodaj.net/cb28976a8b04f.png.html
Muszę utworzyć następujące zapytania:

  1. Ile głosów oddano na poszczególne komitety wyborcze w Okręgowej Komisji Wyborczej nr N?
  2. Jaka była frekwencja w Obwodowej Komisji Wyborczej nr N?
  3. Ile oddano głosów nieważnych w Obwodowej Komisji Wyborczej nr N?
  4. Ile oddano głosów nieważnych w Okręgowej Komisji Wyborczej nr N?
  5. W której Obwodowej Komisji Wyborczej oddano najwięcej głosów na Kandydata K?
  6. Wygenerować raport (protokół) dla Obwodowej Komisji Wyborczej nr N.

na razie udało mi się coś takiego utworzyć:
Select sum(liczbaglosow) as ’liczba glosow’, Komitet.nazwa as partia from Komitet
inner join Kandydat USING (komitetWyborczyID) inner join Wynikglos USING(kandydatID) inner join ObwodowaKW USING (ObwodowaKWID) where ObwodowaKW .OkregowaKWID=(Select .OkregowaKWID from OkregowaKW where nr=N)
group by partia;
Select ROUND(sum(wydanokarte)/count()100,2) as frekwencja from ObwodowaKW inner join Wyborca on Wyborca.ObwodowaKWID=ObwodowaKW.ObwodowaKWID
where nr=N;
Select count(
)-sum(wydanokarte) as ’liczba glosow niewaznych’ from ObwodowaKW inner join Wyborca on Wyborca.ObwodowaKWID=ObwodowaKW.ObwodowaKWID
where nr=N;
Select count(
)-sum(wydanokarte) as ’liczba glosow niewaznych’ from OkregowaKW
inner join ObwKomWyb on ObwodowaKW.OkregowaKWID=OkregowaKW.OkregowaKWID
inner join Wyborca on Wyborca.ObwodowaKWID=ObwodowaKW.ObwodowaKWID
where OkregowaKW.nr=N;
Select Siedziba, Liczbaglosow from ObwodowaKW inner join Wynikglosy USING
(ObwodowaKWID) where Liczbaglosow=(Select max(Liczbaglosow) from Wynikglosy where kandydatID=(select kandydatID from Kandydat where Imie=K));

Bardzo prosiłbym o pomoc.

0
troll2015 napisał(a):

Posiadam następujący schemat bazy danych:

http://zapodaj.net/cb28976a8b04f.png.html
Muszę utworzyć następujące zapytania:

  1. Ile głosów oddano na poszczególne komitety wyborcze w Okręgowej Komisji Wyborczej nr N?
  2. Jaka była frekwencja w Obwodowej Komisji Wyborczej nr N?
  3. Ile oddano głosów nieważnych w Obwodowej Komisji Wyborczej nr N?
  4. Ile oddano głosów nieważnych w Okręgowej Komisji Wyborczej nr N?
  5. W której Obwodowej Komisji Wyborczej oddano najwięcej głosów na Kandydata K?
  6. Wygenerować raport (protokół) dla Obwodowej Komisji Wyborczej nr N.

na razie udało mi się coś takiego utworzyć:
Select sum(liczbaglosow) as ’liczba glosow’, Komitet.nazwa as partia from Komitet
inner join Kandydat USING (komitetWyborczyID) inner join Wynikglos USING(kandydatID) inner join ObwodowaKW USING (ObwodowaKWID) where ObwodowaKW .OkregowaKWID=(Select .OkregowaKWID from OkregowaKW where nr=N)
group by partia;

Po co ten podselect? WHERE nr=N. po prostu
Poza tym robiąc INNER JOINY nie dostaniesz w wyniku komitetów z 0 ilością głosów.

troll2015 napisał(a):

Select ROUND(sum(wydanokarte)/count(*)*100,2) as frekwencja from ObwodowaKW inner join Wyborca on Wyborca.ObwodowaKWID=ObwodowaKW.ObwodowaKWID
where nr=N;

SUM(boolean) - dziwne to... Raczej Count z Case bym użył

troll2015 napisał(a):

Select count(*)-sum(wydanokarte) as ’liczba glosow niewaznych’ from ObwodowaKW inner join Wyborca on Wyborca.ObwodowaKWID=ObwodowaKW.ObwodowaKWID
where nr=N;

Z takiej struktury wydaje mi się, że nie można udzielić odpowiedzi...

troll2015 napisał(a):

Select count(*)-sum(wydanokarte) as ’liczba glosow niewaznych’ from OkregowaKW
inner join ObwKomWyb on ObwodowaKW.OkregowaKWID=OkregowaKW.OkregowaKWID
inner join Wyborca on Wyborca.ObwodowaKWID=ObwodowaKW.ObwodowaKWID
where OkregowaKW.nr=N;

jw.

troll2015 napisał(a):

Select Siedziba, Liczbaglosow from ObwodowaKW inner join Wynikglosy USING
(ObwodowaKWID) where Liczbaglosow=(Select max(Liczbaglosow) from Wynikglosy where kandydatID=(select kandydatID from Kandydat where Imie=K));

Tak samo - po co to podzapytanie. Uzyj JOINów. Już umiesz... Chociaż mógłbyś łączyć po ludzku, nie USINGiem. No i aliasuj tabele...

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