Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> zliczenie i posortowanie
Kinool
post 16.10.2004, 08:50:54
Post #1





Grupa: Zarejestrowani
Postów: 560
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Kwidzyn

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


problem nastepujacy:

baza danych z tabela w ktorej znajduja sie jakies prace useor w 2 tabeli znajduja sie komentarze i oceny wystawiane przez innych userow. Oceny sa od 0 do 4 przy czym 0 to brak oceny.

Relacja wyglada mnijwiecej tak prace.praca_id=komentarze.praca_id tak wiec jest to relacja jeden do wielu.

teraz o ile to mozliwe chcialbym zliczyc ile jest komentarzy z ocena 4, z ocena 3, 2 i 1
i posortowac wg. czestosci wystepowania

niby proste ale mam z tym maly problem bo nie wiem jak zrobic w jednym zapytaniu zliczyc po wartosci ktora moze miec rozne wartosci

moze ktos z ma jakies sugestie, pomysly?


--------------------
Go to the top of the page
+Quote Post
mhs
post 16.10.2004, 08:55:38
Post #2





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


mozesz pokazac strukture bazy danych?

  1. SELECT count(*) FROM prace, komentarze WHERE praca.praca_id = komentarze.praca_id GROUP BY komentarze.ocena


chyba cos takiego, ale nie jestem pewien
Go to the top of the page
+Quote Post
Kinool
post 16.10.2004, 09:11:36
Post #3





Grupa: Zarejestrowani
Postów: 560
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Kwidzyn

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


hmm no niebardzo to dzila jak powinno podalem uproszczona relacje bo jest tam jeszcze pare innych szkopolow ale generalnie chodzi o to zeby posortowac je wg. ilosci wystepowanie danej oceny

najpierw ta praca ktora ma najwiecej 4 jesli jest kilka prac z taka sama iloscia oceny 4 to wtedy wg. oceny 3 tid. potzrebuje pobrac 4 prace

zapytanie wyglda mniejwiecej tak:

  1. SELECT prace.id, prace.autor_id, AVG(komentarze.ocena) AS wynik FROM prace, komentarze, uzytkownicy WHERE prace.id=komentarze.id_pracy AND prace.nominacja=1 AND komentarze.ocena>0 AND uzytkownicy.dzial=2 AND prace.czas>1097445600 GROUP BY prace.id ORDER BY wynik DESC LIMIT 0, 4


tutaj wyciagalem po sredniej ale sytem ten sie troche nie sprawdza i wole wyciagac po ilosci ocen


w twoim pomysle cos jest pokombinuje jeszcze z nim i moze cos uzyskam, ale jesli ktos mialby jakies sugestie to zapraszam do wypowiedzi

Ten post edytował Kinool 16.10.2004, 09:17:56


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.07.2025 - 22:20