Consulta y Conjuntos.

36 views
Skip to first unread message

Esau Hernandez Valles

unread,
Nov 24, 2014, 9:15:05 PM11/24/14
to web2py-...@googlegroups.com
Hola Foro: 
Les comento un pequeño problema que no entiendo del todo. 

Tengo en mi model :

db.define_table('lineas',
   
Field('Cod_Linea', type='integer', label=T('Código Línea')),
   
Field('Nom_Linea', type='string' , label=T('Nombre de Línea')),
    migrate
=True)

db
.lineas.insert(Cod_Linea = 1, Nom_Linea = 'Linea 001')
db
.lineas.insert(Cod_Linea = 2, Nom_Linea = 'Linea 002')
db
.lineas.insert(Cod_Linea = 3, Nom_Linea = 'Linea 003')
db
.lineas.insert(Cod_Linea = 4, Nom_Linea = 'Linea 004')




En mi controladora tengo lo siguiente: 

def lineassql():
  conjunto
= set()
  conjunto
.add(1)
  conjunto
.add(3)

  registros
= db(db.lineas.Cod_Linea in conjunto).select(db.lineas.ALL)



El resultado debería ser  los registros 1 y 3, pero el conjunto de registros que obtengo es toda la tabla. 

Qué estoy haciendo mal?

Saludos. 

Martín Miranda

unread,
Dec 4, 2014, 7:22:48 AM12/4/14
to web2py-...@googlegroups.com
Para hacer eso necesitas utilizar el método belongs del objeto Field.
Ejemplo:

db.auth_user.first_name(("Martin", "Juan", "Pepe"))



Accepts the following inputs:
   field
.belongs(1,2)
   field
.belongs((1,2))
   field
.belongs(query)


Does NOT accept:
   field
.belongs(1)

Martín Miranda

unread,
Dec 4, 2014, 7:24:44 AM12/4/14
to web2py-...@googlegroups.com
De última para tu ejemplo también podrías hacerlo así:

def lineassql():
  conjunto
= set()
  conjunto
.add(1)
  conjunto
.add(3)


  registros
= db(db.lineas.Cod_Linea.belongs(list(conjunto))).select(db.lineas.ALL)

Esau Hernandez Valles

unread,
Apr 2, 2015, 10:59:56 PM4/2/15
to web2py-...@googlegroups.com
Excelente. 
Funcionó de maravilla. 
Muchas Gracias. 
Reply all
Reply to author
Forward
0 new messages