[ruby-it] Alleggerire estrazione dati da tabella
Pietro Giorgianni
giorgian a gmail.com
Lun 5 Ott 2009 14:49:40 CEST
Il 05 ottobre 2009 14.13, Daneel Olivaw <daneel.olivaw.r a gmail.com> ha scritto:
> <% for user in @user %>
> <td><%= user.login %></td>
> <% car1 = Objects.count(:conditions => "caratt1= '1'and user.id =
> '#{user.id}'") %>
> <% car2 = Objects.count(:conditions => "caratt2= '1'and user.id =
> '#{user.id}'") %>
il problema pių grosso, qui, č che stai facendo una query alla volta
(e ogni volta reinizi la connessione col db, mandi la query, aspetti
il risultato e lo converti).
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']
poi puoi scrivere:
<% for user in @user %>
<%= user.login %>
<%= user['car1'] %>
<%= user['car2'] %>
<% end %>
in questa maniera ti colleghi al db una volta sola.
NOTA: ho provato qui da me ma con nomi diversi; riportando i nomi che
hai usato tu potrei aver fatto errori di battitura e comunque non sono
sicuro di aver capito cos'č "1" in "caratt1='1'"...
poi i dialetti sql cambiano, ma una cosa simile dovresti poterla fare
per ogni dbms (anche se ti tocca fare query specifiche).
More information about the Ml
mailing list