Helpful thread : https://groups.google.com/group/web2py/browse_thread/thread/a033d703deba3712/dcbd912788cdbec4?lnk=raot&pli=1
On Fri, Oct 21, 2011 at 11:08 AM, Richard Vézina < [email protected]> wrote: > Ok I had to do this : > > rows1 = db(db.t1).select(*db.t1.ALL, db.t2.ALL*, join=db.t2.on(db.t2.id == > db.t1.t2_id)) > for row in rows1: > print row.t2.f1 + '-' + row.t1.f1 > > And now I get the field of t2... > > Could the example in the book wrong?? > > Richard > > On Fri, Oct 21, 2011 at 11:00 AM, Richard Vézina < > [email protected]> wrote: > >> To me the book example is not logic : >> >> >>> rows = >> >>> db(db.person).select(join=db.person.on(db.person.id==db.dog.owner)) >> >> >> >>> for row in rows: >> print row.person.name, 'has', row.dog.name >> >> >> Alex has Skipper >> Alex has Snoopy >> Bob has Puppy >> >> >> How I understand the syntax is that I will do a join on the table already >> in the from db(db.person)... And it's what the console seems to failed >> with... >> >> What I need is : >> >> SELECT * >> FROM t1 >> INNER JOIN t2 >> ON(t2.id = t1.t2_id) >> >> But what rows1 = db(db.t1).select(join=db.t1.on(db.t1.t2_id == db.t2.id)) >> return that failed seems to be : >> >> SELECT * >> FROM t1 >> INNER JOIN t1 >> ON(t2.id = t1.t2_id) >> >> Richard >> >> >> On Fri, Oct 21, 2011 at 10:48 AM, Richard Vézina < >> [email protected]> wrote: >> >>> Ok, but I am pretty much confuse with the syntax... >>> >>> I try with my own tables by kind of translating person and dog to adapt >>> to my need but it failed... >>> >>> This work : >>> >>> rows = db(db.t1.t2_id == db.t2.id).select() >>> for row in rows: >>> print row.t2.f1 + '-' + row.t1.f1 >>> >>> But this don't work : >>> >>> rows1 = db(db.t1).select(join=db.t1.on(db.t1.t2_id == db.t2.id)) >>> So can't execute the lines below since the upper line has failed... >>> #for row in rows1: >>> # print row.t2.f1 + '-' + row.t1.f1 >>> >>> In console I get those errors : >>> >>> ERROR: An unexpected error occurred while tokenizing input >>> The following traceback may be corrupted or invalid >>> The error message is: ('EOF in multi-line statement', (1376, 0)) >>> >>> ERROR: An unexpected error occurred while tokenizing input >>> The following traceback may be corrupted or invalid >>> The error message is: ('EOF in multi-line statement', (1386, 0)) >>> >>> ERROR: An unexpected error occurred while tokenizing input >>> The following traceback may be corrupted or invalid >>> The error message is: ('EOF in multi-line statement', (1306, 0)) >>> >>> >>> The only way I can execute the query (db().select()) : >>> rows1 = db(db.t1).select(join=db.t2.on(db.t2.id == db.t1.t2_id)) >>> for row in rows1: >>> print row.t2.f1 + '-' + row.t1.f1 >>> >>> In this case the for failed with with the t2.f1 since there is only t1 >>> rows in the output of the request (print(rows1))... >>> >>> Where's my mystake?! >>> >>> Richard >>> >>> On Fri, Oct 21, 2011 at 10:35 AM, Anthony <[email protected]> wrote: >>> >>>> Yes, I think you could always do inner joins, and the new >>>> select(join=...) syntax was introduced in 1.96.1. >>>> >>>> On Friday, October 21, 2011 10:15:09 AM UTC-4, Richard wrote: >>>>> >>>>> Hello, >>>>> >>>>> I would like to make sure the inner join syntax was available in >>>>> 1.98.2 ? >>>>> >>>>> Thanks. >>>>> >>>>> Richard >>>> >>>> >>> >> >

