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
>>>>
>>>>
>>>
>>
>

Reply via email to