Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kłopotliwe zapytanie
dob
post
Post #1





Grupa: Zarejestrowani
Postów: 166
Pomógł: 0
Dołączył: 30.01.2003
Skąd: Warszawa

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


Witam, zwaracam się z prośbą o pomoc w ułożeniu kodu SQL

mam 2 tabele
1) Tabela foto która międzyinnymi zawiera id zdjęcia (id), ilość oddanych na to zdjecie głosów (lglosow) oraz ich sumę (suma)
2) Tabela votes która zawiera takie informacje jak id zdjęcia (fotoid) ocene (ile) oraz kto taką ocenę wystawił (who)

Chciałbym wybrać 25 id z tabeli foto których ocena jest najlepsza. Problem w tym że ocene liczę w następujący sposób :
od sumy odejmuje najwyższą i najmniejszą wystawioną ocenę dla tego zdjęcia oraz dziele przez liczbę głosów którą pomniejszam o 2.
Działanie wygląda mniej więcej tak :
Kod
(`suma` - max( ile ) - min( ile )
) / ( `lglosow` -2 )

Oczywiscie 25 wyników chciałbym posortowac od największego do najmniejszego.

I teraz pytanie czy to jest w ogole wykonalne przy takiej konstrukcji tabel (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Ja tego nie potrafie zrobić (w ogole nie bardzo mam pojęcie o mysql (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) )

Za wszelką pomoc serdecznie dziękuje.

[edit]
Oczywiscie do łączenia z bazą wykorzystuje php, może jakies działania na tablicach czy cos....

Ten post edytował dob 12.01.2006, 22:21:41
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
beton
post
Post #2





Grupa: Zarejestrowani
Postów: 13
Pomógł: 2
Dołączył: 5.11.2003
Skąd: Tarnowskie Góry

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


Tak jest to możliwe, daj mi 20 minut no góra godzinke bo jestem teraz troche zajęte i ułoże to zapytanko (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Najlepiej podejślij mi struktury, i jakies przykładowe dane (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Nie lubie pracować "na sucho" (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

  1. SELECT f.id,((sum(v.ile) - (max(v.ile) + min(v.ile)) ) / (f.lglosow-2)) AS c
  2. FROM foto f,votes v WHERE v.fotoid=f.id GROUP BY f.id ORDER BY c DESC LIMIT 25


Powinno działac, jak chodzi coś nie tak wyslij strukturki i przykladowe dane (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował beton 12.01.2006, 23:37:33
Go to the top of the page
+Quote Post
dob
post
Post #3





Grupa: Zarejestrowani
Postów: 166
Pomógł: 0
Dołączył: 30.01.2003
Skąd: Warszawa

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


Dzięki wielkie (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif)
tak wygląda po moich przeróbkach (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

  1. SELECT foto.*, (
  2. (
  3. foto.suma
  4. ) - max( votes.ile ) - min( votes.ile )
  5. ) / ( foto.lglosow -2 ) AS c
  6. FROM foto, votes
  7. WHERE votes.fotoid = foto.id AND foto.lglosow >=10 AND foto.oceny <2
  8. GROUP BY foto.id
  9. ORDER BY c DESC LIMIT 25


Co najwazniejsze działa!!
Jeszcze raz serdeczne dzięki!


[edit]
Jeszcze jedno pytanko
chciałem zsumować to;
  1. ((sum( foto.suma ) - max( votes.ile ) - min( votes.ile )) / ( foto.lglosow -2 ))
i całość podzielić przez sum(foto.id)

Utworzyłem taki kod :
  1. SELECT sum(
  2. (
  3. (
  4. sum( foto.suma ) - max( votes.ile ) - min( votes.ile ) ) / ( foto.lglosow -2 )
  5. )
  6. ) / sum( foto.id )
  7. FROM foto, votes
  8. WHERE votes.fotoid = foto.id AND foto.autor = 'ktoś'

No i jak zapewne się domyślasz nie działa i znów proszę tym razem chyba poraz ostatni o pomoc.

Pozdrawiam

Ten post edytował dob 13.01.2006, 01:19:31
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: 23.08.2025 - 14:48