Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][MySQL][PHP]rozstęp danych z każdego dnia
Forum PHP.pl > Forum > Przedszkole
Bąbel
Witam, jestem początkujący i proszę o poradę
mam następujący kod

  1. $licznik = -6;
  2. while($licznik < 1)
  3. {
  4. $datastart = date('Y-m-d', mktime(0,0,0,date('m',strtotime($rok."-".$miesiac."-".$dzien)), date('d',strtotime($rok."-".$miesiac."-".$dzien)) + $licznik ,date('Y',strtotime($rok."-".$miesiac."-".$dzien))));
  5. $datastart = explode('-', $datastart);
  6. $rokstart = $datastart[0];
  7. $miesiacstart = $datastart[1];
  8. $dzienstart = $datastart[2];
  9.  
  10. $res = mysql_query ("SELECT podzapytanie.data , AVG(podzapytanie.przeplyw) FROM ( SELECT zf as przeplyw, zf as licznik , time as data , extract(hour from time) as godzina , extract(day from time) as dzien FROM `transmisja` WHERE time BETWEEN '".$rokstart."-".$miesiacstart."-".$dzienstart." 00:00:00' AND '".$rokstart."-".$miesiacstart."-".$dzienstart." 23:59:59' AND numerprzeplywomierza = '1') as podzapytanie GROUP BY podzapytanie.godzina ,podzapytanie.dzien ORDER BY podzapytanie.data ASC");
  11.  
  12. while($row = mysql_fetch_array($res, MYSQL_BOTH))
  13. {
  14. $data = explode(' ', $row[0]);
  15. $godzina = explode(':', $data[1]);
  16. //$xwartosc = 1 - (($godzina[0]*(100/60))/100)+(($godzina[1]*(100/60))/10000)+(($godzina[2]*(100/60))/1000000);
  17. $ywartosc = round ($row[1], 0);
  18. //if($output == "")
  19. // $output = $row[0].$xwartosc.",".($ywartosc)."<br>";
  20. //else
  21. //$output = $row[0].$output." ".$xwartosc.",".($ywartosc)." <br>";
  22. //$xwartosc = $licznik - 1;
  23. $xwartosc = $licznik - (1 - (($godzina[0]*(100/24))/100));
  24. //$output = $xwartosc.",".($ywartosc)." <BR>".$output;
  25. if($output == "")
  26. $output = $xwartosc.",".($ywartosc);
  27. else
  28. $output = $output." ".$xwartosc.",".($ywartosc);
  29. }
  30. $licznik = $licznik +1;
  31. }
  32. if($output == "")
  33. $output = "0,0";
  34. echo $output;


Chodzi mi o zapytanie - w chwili obecnej zwraca mi na osi wartości y średnią i to w sposób ciągły.

Chciałbym, aby zamiast tej średniej pojawiała się różnica między wartością z pierwszego pomiaru danego dnia a wartością z pomiaru ostatniego jako jedna liczba z każdego dnia, tj. np. pierwszy pomiar dnia 2012-05-08 z wynikiem 20 a ostatni pomiar tego dnia z wynikiem 40 - zwraca mi wartość 40.

Bąbel
EDIT: Chciałbym, aby zamiast tej średniej pojawiała się różnica między wartością z pierwszego pomiaru danego dnia a wartością z pomiaru ostatniego jako jedna liczba z każdego dnia, tj. np. pierwszy pomiar dnia 2012-05-08 z wynikiem 20 a ostatni pomiar tego dnia z wynikiem 40 - zwraca mi wartość 20 (40-20=20).
Bąbel
Po przespanej nocy poradziłem sobie. Wystarczyło zmodyfikować zapytania na
  1. $res = mysql_query ("SELECT podzapytanie.data , MAX(podzapytanie.przeplyw), MIN(podzapytanie.przeplyw) FROM ( SELECT zf as przeplyw, zf as licznik , time as data , extract(hour from time) as godzina , extract(day from time) as dzien FROM `transmisja` WHERE time BETWEEN '".$rokstart."-".$miesiacstart."-".$dzienstart." 00:00:00' AND '".$rokstart."-".$miesiacstart."-".$dzienstart." 23:59:59' AND numerprzeplywomierza = '1') as podzapytanie GROUP BY podzapytanie.dzien ORDER BY podzapytanie.data ASC LIMIT 1");


oraz wartość y przedstawić jako
  1. $ywartosc = ($row[1]-$row[2]);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.