Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wartosc srednia
misty
post
Post #1





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

Ostrzeżenie: (0%)
-----


Witam!
Potrzebuje wyciagnac pewne zapytanie. Nie wiem czy to sie wogole da zrobic na poziomie sql, czy juz powinnam sie tym zajac w skrypcie.
mianowicie chodzi o to:
mam 3 tabele:
  1. t_temperatura (id serial PRIMARY KEY, temperatura double precision NOT NULL, data_id int NOT NULL, godzin_id, FOREIGN KEY(DATA)id) REFERENCES t_data(id) match FULL ON UPDATE cascade ON DELETE restrict, FOREIGN KEY(godzina_id) REFERENCES t_godzina(id) match FULL ON UPDATE cascade ON DELETE restrict);
  2.  
  3. t_data (id serial PRIMARY KEY, DATA date NOT NULL);
  4.  
  5. t_godzina (id serial PRIMARY KEY, godzina varchar NOT NULL);


chodzi o to ze: 3 razy na dobe (o godz 6:00, 14:00 i 22:00) dokonywane sa pomiary temperatury. ale ja nie chce wyciagac wszystkich wartosci, tylko dla kazdego dnia wartosc usredniona. Wynikiem mojego zapytania maja byc wszystkie daty w bazie i dla kazdej daty wartosc srednia temperatury z danego dnia. Nie do konca wiem jak wogole 'ugryzc' to zapytanie. tj. wiem ze do wyciagniecia wartosci sredniej sluzy 'avg' ale jak napisac to zapytanie by nie zrobil mi wartosci sredniej z wszystkich wartosci, tylko by robil avg(temperatura) dla kazdej daty?
jakies sugestie?
Pzdr!
Go to the top of the page
+Quote Post
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Hmmm dlaczego nie wstawisz daty i godziny do tabeli t_temperatura? Niepotrzebnie rozbudowujesz strukturę tabeli na 3 tabele. Przy strukturze:
Kod
t_temperatura:
id
temperatura
data
godzina

możesz wykonać takie zapytanie:
  1. SELECT DATA, AVG(temperatura) AS srednia_temperatura FROM t_temperatura GROUP BY DATA

Na Twojej obecnej strukturze również dałoby się to zrobić (odpowiednie złączenia) ale wydaje się to zbyteczne (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
misty
post
Post #3





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

Ostrzeżenie: (0%)
-----


data jest w osobnej tabeli z racji tego, ze pomiarow jest wiecej (tj. nie tylko temperatura), baza jest zbudowana tak, ze latwiej bylo mi wyciagnac daty do osobnej tabeli poniewaz kilka innych tabel z niej korzysta. wiem ze moglam w kazdej z tych pozostalych tabel dodac kolumne 'data' tak jak zasugerowales, ale sadze ze to powielanie informacji juz w bazie istniejacych, dlatego stworzylam osobna tabele, a te ktore z niej korzystaja odwoluja sie po data_id.
masz wiec moze jakies sugestie dla takiej struktury ?(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

a wiesz co, juz sobie poradzilam:) przerobilam Twoje zapytanie, teraz wyglada tak:
  1. SELECT avg(t_temperatura.temperatura) AS srednia_temperatura, t_data.DATA FROM t_temperatura, t_data WHERE t_temperatura.data_id=t_data.id GROUP BY t_data.DATA;

i smiga:)

dzieki wielkie za pomoc!! (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 02:20