count con left

22 views
Skip to first unread message

emp2web

unread,
May 22, 2013, 7:43:17 PM5/22/13
to web2py-...@googlegroups.com
Saludos,

Como puedo realizar un count con un left, es decir necesito saber la cantidad de registros de una consulta esto se hace asi:

db(db.tabla.id>0).count()

Pero necesito hacer una relacion de varias tablas entonces se usa un left

db(db.tabla.id>0).select(db.tabla.id) -> este me trae todos los id

db(db.tabla.id>0).select(db.tabla.id,left = (db.tabla2.on(db.tabla2.id==db.tabla.idtabla2))) -> aca haria la relacion

la solucion inicial es realizar la consulta con el left y luego calcular la cantidad de datos con len pero si llegan a ser muchas relaciones y demaciados registros se muere el servidor,

como podria usarl el count pero adicionando el left 

Gracias.

Jaime

unread,
May 23, 2013, 10:00:29 AM5/23/13
to web2py-...@googlegroups.com
Yo pensaría que para consultas de ese tipo, lo hagas directo con SQL y la función db.executesql('SELECT * FROM table;'); toma en cuenta que haciendo esto pudieras perder portabilidad de base de datos.

Saludos,
Jaime

Roberto Perdomo

unread,
May 23, 2013, 10:15:07 AM5/23/13
to web2py-...@googlegroups.com
Adaptando su ejemplo para tu caso podría ser algo como:

db(db.tabla.id>0).select(db.tabla.id, db.tabla.id.count(),left = db.tabla2.on(db.tabla2.id==
db.tabla.idtabla2), groupby=db.tabla.id)

No lo he probado, pero espero te sirva de guía



--
Has recibido este mensaje porque estás suscrito al grupo "web2py-usuarios" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a web2py-usuari...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 

emp2web

unread,
May 23, 2013, 1:07:50 PM5/23/13
to web2py-...@googlegroups.com
Saludos,

Jaime gracias por tu respuesta, actualmente lo manejo asi pero se pierde la portabilidad y esa no es la idea.

emp2web

unread,
May 23, 2013, 1:13:24 PM5/23/13
to web2py-...@googlegroups.com
Saludos

Roberto gracias por tu respuesta, te cuento que mientras escribia esto sentia que no era funcional pero analizandolo mejor creo que si existe la posibilidad de que funcione, todo depende de la forma en que se haga, te digo porque siento que no es funcional, cuando se usa el db().select() el FW genera una cantidad de informacion para lo que trae entonces funciona muy bn con informacion pequeña pero ya con tablas de millones de registros se muere el servidor sin embargo si solo ido el count de los id dentro del select es probale que funcione, lo voy a verificar y te cuento.
Reply all
Reply to author
Forward
0 new messages