Fazer select com inner join em uma tabela com list:reference

20 views
Skip to first unread message

Guilherme Germano Silva

unread,
Nov 8, 2018, 1:53:49 PM11/8/18
to web2py-users-brazil
Galera, estou tentando fazer um select com inner join em uma tabela com list: reference, a tabela Kits com a Tabela Estoque, mas está retornando nada, alguém poderia me ajuda?
db.py
   
db.define_table('TipoUnidade',
                   
Field('TipoUnidadeDescricao'),
                    format
='%(TipoUnidadeDescricao)s'
                   
)
   
    db
.define_table('Produto',
                   
Field('ID_TipoUnidade', 'reference TipoUnidade', requires=IS_IN_SET(['Unidade', 'Gramas'])),
                   
Field('CodigoBarras', type='integer'),
                   
Field('CodigoCacauShow', type='integer'),
                   
Field('CustoUnitario', type='double'),
                   
Field('QuantidadeMinima', type='double'),
                   
Field('ProdutoDescricao', type='string', label='Produto'),
                    format
='%(ProdutoDescricao)s'
                   
)
   
    db
.define_table('EntradaProdutoEstoque',
                   
Field('ID_Produto', 'reference Produto'),
                   
Field('Validade', type='date'),
                   
Field('Data', type='date'),
                   
Field('Quantidade', type='double'),
                   
Field('Lote'),
                    format
='%(Lote)s' + ' - ' + '%(ID_Produto)s'
                   
)
   
    db
.define_table('Estoque',
                   
Field('ID_Produto', 'reference Produto'),
                   
Field('Ativo', type='boolean', default=True),
                   
Field('Validade', type='date'),
                   
Field('Quantidade', type='double'),
                   
Field('DataDesativacao',type='date'),
                   
Field('Lote')
                   
)


   
   
    db
.define_table('Kits',
                   
Field('Nome'),
                   
Field('ID_Estoque', 'list:reference Estoque'),
                   
Field('QuantidadeProdutos', type='list:integer',label="Quantidade de Produtos"),
                   
Field('QuantidadeKits', type='integer', label="Quantidade de Kits")
                   
)
   
    db
.define_table('SaidaProdutoEstoque',
                   
Field('ID_Estoque', 'reference Estoque'),
                   
#Field('CustoTotal', type='double'),
                   
Field('Data', type='date'),
                   
Field('Quantidade', type='double'),
                   
)


default.py

def kits():
       
   
       
Kits = db().select(db.Produto.ProdutoDescricao,db.Estoque.Lote, db.Kits.QuantidadeKits, db.Kits.Nome,
                           join
=(db.Estoque.on(db.Kits.ID_Estoque == db.Estoque.id),
                                 db
.Produto.on(db.Estoque.ID_Produto == db.Produto.id)))
   
       
return dict(tabelaKits=Kits)

kits.html
   
{{for produto in tabelaKits:}}
             
<tr>
                 
<td id="DescProd">{{=produto.Kits.Nome}}</td>
                 
<td id="DescProd">{{=produto.Produto.ProdutoDescricao}} - {{=produto.Estoque.Lote}}</td>
                 
<td id="DescProd">{{=produto.QuantidadeKits}}</td>
                 
<th id="DescCamp"><button>VISUALIZAR</button></th>
             
</tr>
         
{{pass}}


Carlos Costa

unread,
Nov 28, 2018, 9:45:17 AM11/28/18
to web2py-us...@googlegroups.com
como o campo é uma lista, o operador == não faz sentido.
Teria que ser algo como o in no sql, que no caso pode ser o .contains
db.Estoque.on(db.Kits.ID_Estoque.contains(db.Estoque.id)

--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-us...@googlegroups.com
Para se desinscrever, envie email a: web2py-users-br...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-br...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.


--
At.

Carlos J. Costa
--------------------------------------------------------------
Cientista da Computação - Esp. Gestão em Telecom

Ari Sobel

unread,
Nov 28, 2018, 11:43:57 AM11/28/18
to web2py googlegroups
... ou o belongs?

Rodrigo attique santana

unread,
Dec 3, 2018, 1:02:06 PM12/3/18
to web2py-users-brazil
O belongs você usaria para identificar IDs, ou uma lista de numeros.

Ari Sobel

unread,
Dec 4, 2018, 5:35:01 AM12/4/18
to web2py googlegroups
Qualquer lista, como o IN do SQL

Reply all
Reply to author
Forward
0 new messages