sql łączenie tabel a funkcja count(*)

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
_Ewelina_
Piegowaty Guziec
Piegowaty Guziec
Posty: 2
Rejestracja: 18 gru 2010, 19:20
Płeć: Kobieta
Wersja Ubuntu: inny OS
Środowisko graficzne: Openbox
Architektura: x86

sql łączenie tabel a funkcja count(*)

Post autor: _Ewelina_ »

Problem jest taki: mam tabele pacjenci(id, nazwisko, data_urodzenia) szczepionki(seria,nazwa, ilosc, cena, grupa_wiekowa) i zaszczepienia (id, seria, data_zabiegu)
Pytanie wygląda następująco: przedstaw raport podsumowujący koszty całości akcji szczepien w 2009 roku.
kombinowałam cos tak:

Kod: Zaznacz cały

select count(*) from Zaszczepienia Where Data_zabiegu like '%2009' 
Group by Seria;
wyświetla ilosc zabiegów w poszczególnych seriach, wiec wyglada o.k.

ale nie mam już bladego pojęcia jak to co mi wychodzi pomnożyć przez cene każdej serii z tabeli Szczepionki i z tego wszytkiego jeszcze zliczyc sume, a wszystko to w jednym poleceniu lub perspektywie, POMOCY!!!
kolgreen
Piegowaty Guziec
Piegowaty Guziec
Posty: 18
Rejestracja: 27 lis 2010, 18:43
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: sql łączenie tabel a funkcja count(*)

Post autor: kolgreen »

Na twoje pytanie: "przedstaw raport podsumowujący koszty całości akcji szczepien w 2009 roku" zrobiłbym takie zapytanie:

jesli chodzi ci o raport kosztów dla poszczególnych serii w danym roku:

Kod: Zaznacz cały

SELECT s.seria, SUM(s.cena) as koszt FROM zaszczepienia z, szczepionki s WHERE z.data_zabiegu LIKE '%2009' AND s.seria=z.seria GROUP BY z.seria;
jeśli tylko raport kosztów całkowitych:

Kod: Zaznacz cały

SELECT SUM(s.cena) as koszt FROM zaszczepienia z, szczepionki s WHERE z.data_zabiegu LIKE '%2009' AND s.seria=z.seria;

Kilka uwag:

1.Dlaczego w zaszczepieniach nie ma id pacjenta? Nie wiadomo kto był kiedy szczepiony i w sumie tabela z pacjentami jest trochę w tym wypadku zbędna. Tabela pacjenci powinna też mieć pole z imieniem w końcu może się szczepić cała rodzina. Najlepiej też dodać pole z peselem.

2.Sprawdź czy pole data_zabiegu jest typu date, bo powinno być "like '2009%",
ponieważ format daty jest taki: 2009-11-29, obawiam się, że masz to jako pole tekstowe.
_Ewelina_
Piegowaty Guziec
Piegowaty Guziec
Posty: 2
Rejestracja: 18 gru 2010, 19:20
Płeć: Kobieta
Wersja Ubuntu: inny OS
Środowisko graficzne: Openbox
Architektura: x86

Odp: sql łączenie tabel a funkcja count(*)

Post autor: _Ewelina_ »

w tabeli zaszczepienia jest id_pacjenta, a w pacjentach mam wiecej atrybutów, podalam tylko te najważniejsze, jesli chodzi o pole data to faktycznie zadeklarowalam je jako pole tekstowe, wielkie dzieki za podpowiedz.
Awatar użytkownika
leon1313
Zakręcona Traszka
Zakręcona Traszka
Posty: 668
Rejestracja: 02 sty 2006, 19:35
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: KDE Plasma
Architektura: x86

Odp: sql łączenie tabel a funkcja count(*)

Post autor: leon1313 »

"Poza tym dostałeś PLONKa i zabraniam Ci pisać na te grupe!!! Powiedziałem PLONK i sie zamknij i nawet nie knuj rzeby mi odpisywać! Zabraniam!!!"
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 10 gości