It's really mystify me, both request pass when I specify the data I want :

Works too...
rows1 = db(db.t1).select(db.t1.ALL, db.t2.ALL, join=db.t1.on(db.t1.t2_id ==
db.t2.id))
for row in rows1:
    print row.t2.f1 + '-' + row.t1.f1

Richard

On Fri, Oct 21, 2011 at 11:09 AM, Richard Vézina <
[email protected]> wrote:

> 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