Witam w jaki sposób najlepiej wykonać sumowanie danych z bazy?
Tzn. Mam bazę w której znajduję się komórka Price chciałby na końcu wyświetlić sumę wszystkich “postów” które mają wartośc price.
Czy należy dopisac kod na końcu w szablonie index ?
Mam tabele klients gdzie mam komórkę price.
w Kontrolerze klients_controller.rb
Dopisałem
def self.sumuj
sum('price')
end
w modelu klients.rb
Niestety nie wiem jak to zrobić. Chciałem rozwiązać problem analogicznie jak w poście http://rubyonrails.pl/forum/p10214-2009-05-11-19:55:25 ale niestety nic nie wyświetla.
Mam tabele klients
W niej mam komórkę price
Dlaczego nic nie jest wyświetlane?[/quote]
Może zmień na @wynik.inspect i sprawdź co tak naprawdę jest zwracane. Bo koledzy jak widzę bawią się w Ruby Most Obfuscated Code Contest
Dlaczego nic nie jest wyświetlane?[/quote]
Może zmień na @wynik.inspect i sprawdź co tak naprawdę jest zwracane. Bo koledzy jak widzę bawią się w Ruby Most Obfuscated Code Contest :P[/quote]
Po tym co radziłeś wyświetla: nil
[/code]
Ja lubię co się da na bazę pchać. Tak więc możesz dać jak chcesz
Post.all(:select => “SUM(price) AS razem”)
Coś takiego powinno być ok, wtedy masz dodatkowe pole razem z sumą i tyle[/quote]
W AR Model.sum(‘column’) przetlumaczy sie dokladnie na SELECT SUM(column).
[quote=gotar]Tak czy siak powinno coś się pojawiać. Prześledź to w konsoli:
coś w stylu
Model.all{ |a| puts a.price }
I tak dalej, bo to co piszesz nie ma sens. Miało jak napisałeś że ze 100 i 22 dało ci 10022 ja kto był string, ale nil nie ma sensu.[/quote]
Trochę zamieszałem bo piszę o dwóch rozwiązaniach.
Kod w pliku widoku:
<%=h @klients.sum( &:price ) %>
Dzięki Waszej pomocy (zmiana typu danych na int w bazie) kod wyświetla sumę danych z komórki price.
Wykorzystanie kontrolera
W kontrolerze klients_controller.rb dałem
@wynik = Klient.sum('price')
W widoku
<%= @wynik %>
Pierwsze rozwiązanie działa jeśli ktoś wie w jaki sposób wykorzystać do tego, model, kontroler, widok bardzo proszę o podpowiedź pozdrawiam i dziękuję
[quote=nikos]Tak czy siak powinno coś się pojawiać. Prześledź to w konsoli:
Pierwsze rozwiązanie działa jeśli ktoś wie w jaki sposób wykorzystać do tego, model, kontroler, widok bardzo proszę o podpowiedź pozdrawiam i dziękuję[/quote]
???