Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php & mysql] Segregowanie według średniej
Forum PHP.pl > Forum > Bazy danych > MySQL
oomaster
Witam,

Mam dużo problem, szukałem rozwiązania na tym forum i nie mogę znaleźć. Otóż mam w tabeli pola:

firma
status
glos
ocena

Chcę je wyświetlić od tych co mają największą średnią oceny i status 1 więc w polu ocena sumuję oceny wszystkie a w polu glos liczbę głosów czyli wiadomo ocena/glos daje średnią. I mam takie zapytanie długie ale jest nie poprawne, chodzi o kawałek "ocena/glos". Jak tu zrobic by było poprawne ?

  1. SELECT SQL_CALC_FOUND_ROWS * FROM naszefirma WHERE STATUS=1 ORDER BY ocena/glos DESC LIMIT $start, $na_stronie



Pomocy.
specialplan
  1. SELECT SUM(glos) AS glos_suma, SUM(ocena) AS ocena_suma, (ocena_suma/glos_suma) AS srednia FROM nasza_firma WHERE STATUS=1 ORDER BY srednia DESC LIMIT $start, $na_stronie


Tak sobie improwizuje
oomaster
Niestety dalej nie działa.
Cytat
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/noty/domains/xxxxxxx/public_html/firma_top.php on line 54


A oto jak to przerobiłem:

SELECT SQL_CALC_FOUND_ROWS SUM(glos) AS glos_suma, SUM(ocena) AS ocena_suma, (ocena_suma/glos_suma) AS srednia, * FROM naszafirma WHERE status=1 ORDER BY srednia DESC LIMIT $start, $na_stronie

Próbowałem też tak:

SELECT SQL_CALC_FOUND_ROWS, SUM(glos) AS glos_suma, SUM(ocena) AS ocena_suma, (ocena_suma/glos_suma) AS srednia, * FROM naszafirma WHERE status=1 ORDER BY srednia DESC LIMIT $start, $na_stronie

I nie działa :/
specialplan
Szczerze mowiac, nie wiem jak zachowuje sie SQL_CALC_FOUND_ROWS - przyznam szczerze, ze nie uzywalem wczesniej. Bez przerobek to co napisalem tez wywala blad?
oomaster
Samego twojego kodu nie testowałem ponieważ nie działało by mi sortowanie na strony. Dlatego nie mogę bez funkcji SQL_CALC_FOUND_ROWS mellow.gif dlatego sytuacja tak sie komplikuje
specialplan
Rozumiem.
nospor
blad masz tutaj: , *
nie mozesz po przecinku dac *. Musi byc:
  1. .... , naszafirma.* FROM ....


Cytat
ponieważ nie działało by mi sortowanie na strony. Dlatego nie mogę bez funkcji SQL_CALC_FOUND_ROWS mellow.gif dlatego sytuacja tak sie komplikuje
Aj tam. glupoty gadasz winksmiley.jpg
Mozesz spokojnie bez tego SQL_CALC_FOUND_ROWS zrobic sobie zapytanie. A liczbe wierszy wyliczysz zapytaniem z count(*)
oomaster
dzięki wam dzięki wam oświeciło mnie podziękowania dla specialplan i nospor'a biggrin.gif

Dla ciekawskich rozwiązanie:
Cytat
SELECT SQL_CALC_FOUND_ROWS * FROM naszafirma WHERE status=1 ORDER BY (ocena/glos) DESC LIMIT $start, $na_stronie
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-2024 Invision Power Services, Inc.