On Apr 7, 2010, at 3:48 PM, [email protected] wrote:
On 07/04/2010 15:44, Lean wrote:
On Apr 7, 2010, at 3:28 PM, Damian Janowski wrote:
2010/4/7 Lean <[email protected]>:
Una expresión con un :joins de la siguiente manera, no me da
error, pero
tampoco me da las columnas de la otra tabla...
@hosts = Host.find(:all, :joins => [:cliente])
No me acuerdo mucho, pero:
@hosts = Host.find(:all, :include => [:cliente])
Lamentablemente el :include da exáctamente lo mismo, ya lo había
probado y no hay diferencia... Como si no incluyera nada...
Gracias de todos modos.
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
Como te han dicho por ahi... en el modelo tenes las relaciones?
Y por otra parte... deberias hacer otro thread para este tema, y no
como respuesta a un trhead ya hecho qeu no guarda relacion.
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
Perdón, no entendí lo de hacer otro thread. Mi última respuesta no
tiene relación con el subject? Me perdí...
Realmente muy agradecido con todos los que respondieron y dieron
consejos!
Les cuento: Tengo los modelos mapeados según:
app/models/cliente.rb:
class Cliente < ActiveRecord::Base
has_many :hosts
end
app/models/host.rb:
class Host < ActiveRecord::Base
belongs_to :cliente
end
Mis tablas no tienen más que id (PK), y los campos que menciono.
Muy interesantes los consejos de "olvidate de SQL, trabajá con tus
entidades", sin embargo, este problema se inició con otro problema
sobre un modelo mucho más complejo y generó la inquietud de probar
sobre algo más pavo. Resultó que tampoco funcionó.
Les cuento el porqué de mi "capricho" con los joins: Tengo que hacer
una búsqueda entre dos tablas: una de unos 40 millones de registros,
relacionada vía FK con otra que tiene un millón y medio. Estas dos
están relacionadas con 5 tablas más (bien chiquitas). Resulta que mis
queries se volvieron complicados y -creanme- no me queda otra que
utilizar los joins pero a través de un espantoso find_by_sql... :-(
Imagínense que con este volúmen de datos, por cada registro de la
tabla grande, rails me hace otro select para ubicar los registros en
la tabla más chica. Ergo, una única consulta desencadena unas 40.000
consultas de un tirón cuando hago algo como:
@hosts.map {|h| [h.cliente.nombre, h.hostname]}
Quiero evitar todas esas consultas y entonces recurrí a los :joins.
Probé con :include, probé con muchas cosas...
Por supuesto, ese volúmen no aplica en un problema como Host <->
Cliente, pero sí en los datos de captura de logs de un grupo muy
grande de servidores (de ahi los 40M de registros!). Por simplicidad
para con la pregunta a ustedes, resumí mi duda a un simple problema
(donde reproduje el mismo problema que en el caso grande!)
Gracias a todos, nuevamente.
Leandro.
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar