[ruby-it] Alleggerire estrazione dati da tabella

Daneel Olivaw daneel.olivaw.r a gmail.com
Mer 7 Ott 2009 12:39:09 CEST


Pietro Giorgianni wrote:

> dovresti cercare di fare meno query. se stai usando mysql potresti fare 
> cos�:
@user = User.find_by_sql ["select *, (select count(*) from objects
> where objects.user_id = users.id and caratt1=?) as car1, (select
> count(*) from objects where objects.user_id = users.id and caratt2=?)
> as car2) from users", '1', '1']

Provato e funziona: sono sui 9 secondi per generare la pagina.
Ah, c'è un errore dopo "car2" (che poi sarebbe lafine dell'ultimo 
conteggio e passaggio alla variabile) non ci va la parentesi :-)

> poi puoi scrivere:
> 
> <% for user in @user %>
>   <%= user.login %>
>   <%= user['car1'] %>
>   <%= user['car2'] %>
> <% end %>

Curiosità: dovendo anche generare i totali delle varie caratteristiche, 
io ho una cosa del genere:

<% for user in @user %>
  <%= user.login %>
  <%= user['car1'] %>
  <% car1tot += user['car1'].to_i %>
  <%= user['car2'] %>
  <% car2tot += user['car2'].to_i %>
<% end %>
...

Ho dovuto aggiungere il "to_i" perché il dato così com'è è visto come 
stringa... è normale?
-- 
Posted via http://www.ruby-forum.com/.


More information about the Ml mailing list