Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]błędnie obliczany procent
Forum PHP.pl > Forum > Przedszkole
kemes123
Witam
Poszukałem na forum kilka tematów na temat procentów ale nic mi to nie dało.
Wyświetlam sobie wartości w tabeli odpowiadające konkretnym zapytaniom.

Następnie wyniki zapytań chce podzielić

  1.  
  2. $totalp2_4 = ($p3_2/$p3_5/100)
  3.  
  4. Gdzie wynik dla $p3_2 = 50 i $p3_5 = 4911
  5.  


Za pomocą kalkulatora wychodzi 0,010 a z zapytania 0.12
tehaha
jak obliczasz jaki procent liczby stanowi druga liczba to się mnoży przez 100%, a nie dzieli...
  1. $p3_2 = 50;
  2. $p3_5 = 4911;
  3. $totalp2_4 = ($p3_2/$p3_5)*100;
  4. echo $totalp2_4;


@down: a co daje ten dodatkowy nawias?
smietek
  1. $totalp2_4 = ($p3_2/$p3_5)

Potem mnożysz przez 100 i dodajesz % na koniec...
kemes123
Od doszedłaem do tego dzięki mam jescze jedno pytanie o odejmowanie dat stosuje zapytani
  1.  
  2. SELECT DATEDIFF( date2, date1 ) AS dzien, `date2` , `date1`
  3. FROM skrzynka
  4. WHERE (
  5. `date2`
  6. BETWEEN '2010-05-01'
  7. AND '2010-05-31'
  8. )
  9. ORDER BY `date2`
  10. LIMIT 0 , 30
  11.  


Efekt tego zapytania to różnica pokazywana w dniach między dwoma datami:
dzień
3 2010-05-03 08:13:47 2010-04-30 19:08:00

I to działa poprawnie ale chcę zliczyć ilość wszystkich wystąpień w w kolumnie dzień wpisując
  1.  
  2. SELECT DATEDIFF( date2, date1 ) AS dzien, `date2` , `date1` ,count (*)
  3. FROM skrzynka
  4. WHERE (
  5. `date2`
  6. BETWEEN '2010-05-01'
  7. AND '2010-05-31'
  8. )
  9. ORDER BY `date2`
  10. LIMIT 0 , 30

Wywala błąd
tehaha
wygląda dobrze, może różnicę robi ta spacja w count (*) więc spróbuj:
  1. SELECT DATEDIFF( date2, date1 ) AS dzien, `date2` , `date1` , COUNT(*) AS num
  2. FROM skrzynka
  3. WHERE (
  4. `date2`
  5. BETWEEN '2010-05-01'
  6. AND '2010-05-31'
  7. )
  8. ORDER BY `date2`
  9. LIMIT 0 , 30
  10.  


poza tym lepiej gdybyś zliczał kolumnę id a nie wszystkie
kemes123
Takie zapytanie działa wcześniej próbowałem ale wyniki jest pokazywany

dzien date2 date1 num
3 2010-05-03 08:13:47 2010-04-30 19:08:00 5111

Z tego co widzę wylicza wszystkie rekordy z tego przedziału czasowego a nie ile ich dokładnie jest
nospor
no tak, tak dziala WHERE - zawęza wyniki do warunków.
Jak chcesz sobie policzyc liczbę rekordów to zrób count() w oddzielnym zapytaniu

Na dodatek dales limit - też ci zawezyl wyniki do max 30
kemes123
Nie wiem czy dobrze zrozumiałem, zrobiłem dodatkową kolumnę w tabeli o nazwie różnica i teraz można by zapisywać wyniki w tej kolumnie i z niej liczyć count ale nie mam pojęcia jak zapisywać tam te rekordy
nospor
No chyba źle zrozumiales. Nie kazalem ci robic zadnej dodatkowej kolumny. Miales napisac oddzielne zapytanie dla wyliczenia liczby.
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.