yes and no. It is not efficient and it is not an alternative to joins. Yes 
it is convenient and a little smart than you think. For example:

*row.product*

is an Reference object (extends integer) and there is no nested query.

*row.product.name *

now this does a nested query and remembers it

*row.product.vendor*

No more query because it remembers the previous query.

*row.product.vendor.name *

Here you have another nested query

*row.product.categories*

this is a list of references so there is no nested query only a lost of 
reference objects. The query happens when you do

*row.product.categories[0].name*

etc.

On Sunday, 13 December 2015 07:09:23 UTC-6, Robin Manoli wrote:
>
> Is there a way to select a set of fields and corresponding list:reference 
> fields in one query?
>
> I have these three tables:
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *db.define_table( 'product',    Field( 'name' ),    Field( 'categories', 
> 'list:reference category' ),    Field( 'vendor', 'reference vendor' 
> ), )db.define_table( 'vendor',    Field( 'name' ),)db.define_table( 
> 'category',    Field( 'name' ),)*
> Now I can select all products with correspoding vendors in one query such 
> as:
>
> *query = (db.product.id <http://db.product.id> > 0) & (db.**product.**vendor 
> == db.*
>
>
> *vendor.id)rows = db( query ).select()*I access product as *row.product* 
> and vendor as *row.vendor*
> I can also access *row.product.categories*, but doesn't that mean each 
> product creates a unique mysql query? How to make it efficient?
>
>
>

-- 
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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to