Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> "Zapętlona suma"
Swiezu
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 11.02.2013

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


Witam (IMG:style_emoticons/default/smile.gif)

Szukam pomocy bo już żadnego pomysłu nie mam, a w internecie nic nie znalazłem.

Do rzeczy

Tabela user:
id(k) | date | ref

Tabela download
id | user_id(k) | cash | date

kolumna ref definiuje przez jakiego usera sie zarejestrowal ten kolejny, czyli np. wpis
User: 12 | 2012-12-12 | 7 - definiuje ze 12.12.2012 dolaczyl uzytkownik z polecenia uzytkownika o id 7

download to pobrania danego uzytkownika download.user_id = user.id (oznaczylem jako k, zeby bylo latwiej).
teraz moj problem

musze wybrac w danej dacie najwiekszy zarobek 10 userow, czyli:
  1. SELECT u.id, (SELECT SUM(cash) FROM download WHERE user_id = u.id AND date LIKE(2012-12%)) AS allearn FROM user u ORDER BY allearn DESC LIMIT 10


problem w tym ze ja potrzebuje SUM(cash) powiekszony o zarobki uzytkownikow, ktorzy maja u.id w polu ref ... da się to w ogóle zrobić?
Mam nadzieję, że dobrze wytłumaczyłem o co chodzi.

Krótko mówiąc potrzebuję 10-ciu najbardziej zarabiających użytkowników w danym czasie uwzględniając zarobki użytkowników przez nich poleconych.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Rekurencja niezbyt dobrze działa w bazach danych. Powinieneś przy użytkowniku (w tabeli user) mieć dodatkowe pole z interesującą cię liczbą. Dodatkowo przy każdym INSERT (ew. UPDATE jak podołasz) na tabeli download powinieneś wartość tego pola zmieniać TRIGGEREM (i wszystkich powyżej) - w TRIGGERACH możesz użyć pętli (chyba).
Go to the top of the page
+Quote Post

Posty w temacie


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: 2.10.2025 - 22:44