Agrupar campos de una misma tabla

38 views
Skip to first unread message

Federico Ferraro

unread,
May 23, 2013, 10:22:12 AM5/23/13
to web2py-...@googlegroups.com
Hola grupo , tengo una tabla que tiene la siguiente estructura : 

id    username    attribute     op     value 
"3";"wifi2";"Cleartext-Password";":=";"prueba2"
"4";"wifi2";"NAS-IP-Address";"=~";"10.102.1.*"
"5";"wifipm";"Cleartext-Password";":=";"pepe"
"6";"wifipm";"NAS-IP-Address";"=~";"10\.101\.1\.[0-9]{1,3}"

Necesito hacer una consulta que me agrupe por username y tener los campos de los dos registros que tienen usuarios iguales.

Probe con groupby, pero me da error . 

El modelo : 
db.define_table('radcheck', Field('username', required = True , label='Nombre de Usuario'),Field('attribute', required = True, label='Atributo'), Field('op', required = True, label='Operación'), Field('value', required = True, label='Valores'))


Slds.. 
 
--
--
Federico Ferraro
Usuario Linux : 482533.
--

Alan Etkin

unread,
May 24, 2013, 12:17:10 PM5/24/13
to web2py-...@googlegroups.com

Necesito hacer una consulta que me agrupe por username y tener los campos de los dos registros que tienen usuarios iguales.
Probe con groupby, pero me da error . 

¿Cuál es el código/comando que da error? ¿Qué error te da?

Federico Ferraro

unread,
May 24, 2013, 12:30:56 PM5/24/13
to web2py-...@googlegroups.com
Hola Alan , esta es la consulta :

reg = db().select(db.radcheck.ALL, groupby=db.radcheck.username) 
return dict(registros=reg)


Este es el error :

<class 'psycopg2.ProgrammingError'> column "radcheck.id" must appear in the GROUP BY clause or be used in an aggregate function LINE 1: SELECT radcheck.id, radcheck.username, radcheck.attribute, ... ^


Slds ... 



--
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.
 
 

Marco Mansilla

unread,
May 24, 2013, 2:38:24 PM5/24/13
to web2py-...@googlegroups.com
El Fri, 24 May 2013 13:30:56 -0300
Federico Ferraro <fferr...@gmail.com> escribió:
probaste haciendo:

reg = db(db.radcheck.ALL).select(groupby=db.radcheck.username)
return dict(registros=reg)

deberia funcionar

Federico Ferraro

unread,
May 24, 2013, 6:22:39 PM5/24/13
to web2py-...@googlegroups.com
Me da el mismo error . Me parece que voy a tener que usar consultas anidadas .. 

Slds ... 


Para obtener más opciones, visita https://groups.google.com/groups/opt_out.


Alan Etkin

unread,
May 25, 2013, 6:38:52 AM5/25/13
to web2py-...@googlegroups.com
Me da el mismo error . Me parece que voy a tener que usar consultas anidadas .. 

Creo que groupby se debe usar en conjunto con orderby para que no de error, porque en el libro no hay ejemplos de uso del argumento groupby a secas (sólo en casos de joins). Quizás podés probar especificando:

... .select(orderby=<campo>, groupby=<campo>)

Reply all
Reply to author
Forward
0 new messages