Hi Massimo, this new functionality is great!! How will be the syntax for the Mirek use case? And what if we have something like invoice_item >- product >- product_group >- group_thing ? And more and more and more?
Greetings. El lunes, 11 de julio de 2016, 2:01:19 (UTC-4), Massimo Di Pierro escribió: > > yes. you can do that. > > On Thursday, 7 July 2016 05:31:30 UTC-5, Mirek Zvolský wrote: >> >> Massimo, this is great ! >> >> From your second example I think, it could work for serial m:1 joins too. >> Example: >> invoice_item >- product >- product_group >> If I want list invoice_items with product.name + with product_group.name >> >> Realy is this now possible? >> >> >> >> >> >> Dne úterý 5. července 2016 20:20:06 UTC+2 Massimo Di Pierro napsal(a): >>> >>> db = DAL() >>> >>> db.define_table('person',Field('name')) >>> >>> db.define_table('thing',Field('name'),Field('owner','reference person')) >>> >>> >>> for name in ('Max','Tim','Jim'): >>> >>> i = db.person.insert(name=name) >>> >>> for thing in ('Chair','Table','Bike'): >>> >>> db.thing.insert(owner=i, name=name+"'s "+thing) >>> >>> >>> rows = db(db.thing).select().join(db.person.id) >>> >>> print(rows.as_json()) >>> >>> >>> """ >>> >>> >>> >>> [{"owner": {"id": 1, "name": "Max"}, "id": 1, "name": "Max's Chair"}, >>> >>> >>> >>> {"owner": {"id": 1, "name": "Max"}, "id": 2, "name": "Max's Table"}, >>> >>> >>> >>> {"owner": {"id": 1, "name": "Max"}, "id": 3, "name": "Max's Bike"}, >>> >>> >>> >>> {"owner": {"id": 2, "name": "Tim"}, "id": 4, "name": "Tim's Chair"}, >>> >>> >>> >>> {"owner": {"id": 2, "name": "Tim"}, "id": 5, "name": "Tim's Table"}, >>> >>> >>> >>> {"owner": {"id": 2, "name": "Tim"}, "id": 6, "name": "Tim's Bike"}, >>> >>> >>> >>> {"owner": {"id": 3, "name": "Jim"}, "id": 7, "name": "Jim's Chair"}, >>> >>> >>> >>> {"owner": {"id": 3, "name": "Jim"}, "id": 8, "name": "Jim's Table"}, >>> >>> >>> >>> {"owner": {"id": 3, "name": "Jim"}, "id": 9, "name": "Jim's Bike"}] >>> >>> >>> >>> """ >>> >>> >>> >>> rows = db(db.person).select().join(db.thing.owner, name="owns", fields=[ >>> db.thing.id, db.thing.name]) >>> >>> print(rows.as_json()) >>> >>> >>> """ >>> >>> >>> >>> [{"id": 1, "name": "Max", "owns": [ >>> >>> >>> >>> {"id": 1, "name": "Max's Chair"}, >>> >>> >>> >>> {"id": 2, "name": "Max's Table"}, >>> >>> >>> >>> {"id": 3, "name": "Max's Bike"}]}, >>> >>> >>> >>> {"id": 2, "name": "Tim", "owns": [ >>> >>> >>> >>> {"id": 4, "name": "Tim's Chair"}, >>> >>> >>> >>> {"id": 5, "name": "Tim's Table"}, >>> >>> >>> >>> {"id": 6, "name": "Tim's Bike"}]}, >>> >>> >>> >>> {"id": 3, "name": "Jim", "owns": [ >>> >>> >>> >>> {"id": 7, "name": "Jim's Chair"}, >>> >>> >>> >>> {"id": 8, "name": "Jim's Table"}, >>> >>> >>> >>> {"id": 9, "name": "Jim's Bike"}]} >>> >>> >>> >>> ] >>> >>> >>> >>> """ >>> >>> >>> this is designed to be efficient and work on GAE too as long as rows is >>> not too long. >>> >> -- 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.