Thank you. I will link the tables and let you know the result.

Best 

Enviado do meu iPhone

> Em 6 de nov de 2016, às 17:22, Niphlod <[email protected]> escreveu:
> 
> it seems that on the whole set there's something missing
> 
> 1st query
> indiban
> anos
> empresas
> indicadores
> 
> 2nd query
> eleban
> anos
> empresas
> elementos
> 
> moreover, in your "DAL syntax", only the references to those external tables 
> are taken.
> The real missing link that could get you the answer is how to link elementos 
> and indicadores (or, more specifically, indicadores_id and elementos_id). 
> Without that, there's - apparently - no way to link eleban and indiban. 
> 
>> On Saturday, November 5, 2016 at 3:16:10 PM UTC+1, Gualter Portella wrote:
>> Dear all,
>> 
>> I hope this e-mail finds you all well.
>> 
>> I have written two queries to retrieve data from my database (model). I did 
>> them initially through plain SQL, then I followed the DAL syntax. They all 
>> return the same output regardless the syntax chosen. Please, see the code 
>> below:
>> 
>> Two different controllers:
>> 
>> def sql():
>>     sql = "SELECT indiban.valor, meses.abrev, anos.numero, empresas.nome "
>>     sql = sql + "FROM indiban INNER JOIN meses ON indiban.meses_id = 
>> meses.id "
>>     sql = sql + "INNER JOIN anos ON indiban.anos_id = anos.id "
>>     sql = sql + "INNER JOIN indicadores ON indiban.indicadores_id = 
>> indicadores.id "
>>     sql = sql + "INNER JOIN empresas ON indiban.empresas_id = empresas.id "
>>     sql = sql + "WHERE indicadores.id = 3 "
>>     sql = sql + "AND meses.id = 5 AND anos.id = 22 Limit 10;"
>>     ratios = db.executesql(sql)
>>     
>>     sql = "SELECT eleban.valor, meses.abrev, anos.numero, empresas.nome "
>>     sql = sql + "FROM eleban INNER JOIN meses ON eleban.meses_id = meses.id "
>>     sql = sql + "INNER JOIN anos ON eleban.anos_id = anos.id "
>>     sql = sql + "INNER JOIN elementos ON eleban.elementos_id = elementos.id  
>> "
>>     sql = sql + "INNER JOIN empresas ON eleban.empresas_id = empresas.id "
>>     sql = sql + "WHERE elementos.id = 5 "
>>     sql = sql + "AND meses.id = 5 AND anos.id = 22 Limit 10;"
>>     accounts = db.executesql(sql)
>>     
>>     return locals()
>> 
>> def sfn():
>> 
>>    ratios = db((Indiban.meses_id==mes_id)&(Indiban.anos_id==ano_id)&
>>                 
>> (Indiban.indicadores_id==rspla_id)).select(Indiban.empresas_id, 
>> Indiban.valor,
>>                                                            Indiban.meses_id, 
>> Indiban.anos_id, limitby=(0, 10))
>> 
>>    accounts = db((Eleban.meses_id==mes_id)&(Eleban.anos_id==ano_id)&
>>                 (Eleban.elementos_id==ativo_id)).select(Eleban.empresas_id, 
>> Eleban.valor,
>>                                                            Eleban.meses_id, 
>> Eleban.anos_id, limitby=(0, 10))
>> 
>> 
>>     return locals()
>> 
>> DAL output:
>> 
>> indiban.empresas_idindiban.
>> valorindiban.meses_idindiban.anos_idSISTEMA FINANCEIRO 
>> NACIONAL0.1300052016BANCO DO BRASIL0.1100052016BRB - BANCO DE 
>> BRASILIA0.0200052016POTTENCIAL-0.0100052016CAIXA ECONOMICA 
>> FEDERAL0.0300052016BANCO INTERMEDIUM0.0400052016RIBEIRAO 
>> PRETO0.1200052016BGN 
>> CETELEM-0.1200052016SEMEAR-0.0100052016BM&FBOVESPA0.1500052016
>> 
>> eleban.empresas_ideleban.valoreleban.meses_ideleban.anos_idSISTEMA 
>> FINANCEIRO NACIONAL7404931306106.43052016BANCO DO 
>> BRASIL1070715292094.95052016BRB - BANCO DE 
>> BRASILIA13013438306.52052016POTTENCIAL167724699.00052016CAIXA ECONOMICA 
>> FEDERAL1096578802720.18052016BANCO INTERMEDIUM2745032207.17052016RIBEIRAO 
>> PRETO486037290.78052016BGN 
>> CETELEM8371996257.63052016SEMEAR717457527.11052016BM&FBOVESPA234811696.13052016
>>  
>> 
>> SQL Output: 
>> 
>> ((Decimal('0.1300'), u'mai', u'2016', u'SISTEMA FINANCEIRO NACIONAL'), 
>> (Decimal('0.1100'), u'mai', u'2016', u'BANCO DO BRASIL'), 
>> (Decimal('0.0200'), u'mai', u'2016', u'BRB - BANCO DE BRASILIA'), 
>> (Decimal('-0.0100'), u'mai', u'2016', u'POTTENCIAL'), (Decimal('0.0300'), 
>> u'mai', u'2016', u'CAIXA ECONOMICA FEDERAL'), (Decimal('0.0400'), u'mai', 
>> u'2016', u'BANCO INTERMEDIUM'), (Decimal('0.1200'), u'mai', u'2016', 
>> u'RIBEIRAO PRETO'), (Decimal('-0.1200'), u'mai', u'2016', u'BGN CETELEM'), 
>> (Decimal('-0.0100'), u'mai', u'2016', u'SEMEAR'), (Decimal('0.1500'), 
>> u'mai', u'2016', u'BM&FBOVESPA')) 
>> ((Decimal('7404931306106.43'), u'mai', u'2016', u'SISTEMA FINANCEIRO 
>> NACIONAL'), (Decimal('1070715292094.95'), u'mai', u'2016', u'BANCO DO 
>> BRASIL'), (Decimal('13013438306.52'), u'mai', u'2016', u'BRB - BANCO DE 
>> BRASILIA'), (Decimal('167724699.00'), u'mai', u'2016', u'POTTENCIAL'), 
>> (Decimal('1096578802720.18'), u'mai', u'2016', u'CAIXA ECONOMICA FEDERAL'), 
>> (Decimal('2745032207.17'), u'mai', u'2016', u'BANCO INTERMEDIUM'), 
>> (Decimal('486037290.78'), u'mai', u'2016', u'RIBEIRAO PRETO'), 
>> (Decimal('8371996257.63'), u'mai', u'2016', u'BGN CETELEM'), 
>> (Decimal('717457527.11'), u'mai', u'2016', u'SEMEAR'), 
>> (Decimal('234811696.13'), u'mai', u'2016', u'BM&FBOVESPA')) 
>> 
>> The data  in the output are identical as expected. What I want to do is  to 
>> combine  the two queries into one, preferably in DAL, so that I do not need 
>> to use two loops in order to insert the indiban.valor and eleban.valor 
>> values side by side in a view table. So far, I've failed miserably.
>> 
>> The tables indiban and eleban are linked to the meses, anos and empresas 
>> tables as depicted in the relational schema below. If you can help me, I'd 
>> appreciate much. Otherwise, I will stick to the two loops.
>> 
>> Best regards,
>> 
>> Gualter
>> 
> 
> -- 
> Resources:
> - http://web2py.com
> - http://web2py.com/book (Documentation)
> - http://github.com/web2py/web2py (Source code)
> - https://code.google.com/p/web2py/issues/list (Report Issues)
> --- 
> You received this message because you are subscribed to the Google Groups 
> "web2py-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to