[pyar] web2py - multiple left joins

Luciano Bovio omicronvt en gmail.com
Mie Jul 10 09:30:17 ART 2013


On 08/07/13 16:41, Mariano Reingart wrote:
> 2013/7/8 Luciano Bovio <omicronvt en gmail.com>:
>> Hola:
>>
>> Tengo un query a la db y quisiera usar 2 left joins, para lo cual hago algo
>> así :
>> results=db(db.tabla1).select(left=[db.tabla2.on(db.tabla1.campo2==db.tabla2.id),
>> db.tabla3.on(db.tabla1.campo3=db.tabla3.id)])
>>
>> según el libro de web2py el left se puede pasar como un lista...
>> pero no toma el left, de hecho aunque ponga 1 solo left y lo ponga entre [],
>> ya deja de funcionar
>
> A simple vista debería funcionarte el left como lista, pero quizas sea
> otro tema.
> En el select, deberías agregar db.tabla1.ALL para que te devuelva los
> campos de esa tabla.
> Fijate que en el segundo join (db.tabla1.campo3=db.tabla3.id) la
> comparación debería ser un ==
>
> Creo que quedaría:
>
> results=db().select(db.tabla1.ALL,
> left=[db.tabla2.on(db.tabla1.campo2==db.tabla2.id),
> db.tabla3.on(db.tabla1.campo3==db.tabla3.id)])
>
> Si el problema persiste, podrías adjuntar el contenido de db._lastsql
> para ver que consulta está generando.
>
> Sds
>
> Mariano Reingart
> http://www.sistemasagiles.com.ar
> http://reingart.blogspot.com
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
>

Gracias Mariano, así es como funciona para que muestre las 3 tablas :

 > results=db().select(db.tabla1.ALL, db.tabla2.ALL, db.tabla3.ALL,
 > left=[db.tabla2.on(db.tabla1.campo2==db.tabla2.id),
 > db.tabla3.on(db.tabla1.campo3==db.tabla3.id)])

Saludos


More information about the pyar mailing list