On Fri, Oct 05, 2007 at 12:01:35AM +0200, Daniel Fetchinson wrote:
> > > http://sqlobject.gcu.info/trac/ticket/294
> >
> > If you replace the first join with (replace None with animal table)
> > joins.append( LEFTJOINOn( animal, cage, animal.q.cageID==cage.q.id ) )
> > would it help?
>
> Hi Oleg, this thing would be of interest to me as well.
>
> After doing the change you advised the query runs without an exception
> but prints 0 which is obviously incorrect. I'm on sqlite, maybe
> somebody else could test with other backends?
joins = [ ]
joins.append( LEFTJOINOn( None, cage, animal.q.cageID==cage.q.id ) )
joins.append( LEFTJOINOn( None, zoo, cage.q.zooID==zoo.q.id ) )
print animal.select( zoo.q.name=='myzoo', join=joins ).count( )
generates the query
SELECT COUNT(*) FROM named LEFT JOIN cage ON ((animal.cage_id) = (cage.id))
LEFT JOIN zoo ON ((cage.zoo_id) = (zoo.id))
WHERE (((named.name) = ('myzoo')) AND ((named.child_name) = ('animal')))
for which SQLite returns the error:
sqlobject.dberrors.OperationalError: no such column: animal.cage_id
The problem is that there is no table 'animal' in the FROM list. I am
trying to put the table there:
joins = [ ]
joins.append( LEFTJOINOn( animal, cage, animal.q.cageID==cage.q.id ) )
joins.append( LEFTJOINOn( None, zoo, cage.q.zooID==zoo.q.id ) )
print animal.select( zoo.q.name=='myzoo', join=joins ).count( )
which leads to the query
SELECT COUNT(*) FROM named, animal LEFT JOIN cage ON ((animal.cage_id) =
(cage.id)) LEFT JOIN zoo ON ((cage.zoo_id) = (zoo.id))
WHERE (((named.name) = ('myzoo')) AND ((named.child_name) = ('animal')))
The result is '0', though - no rows are found. Now I don't know what
a query you expected.
PostgreSQL reports exactly the same error:
psycopg2.ProgrammingError: missing FROM-clause entry for table "animal"
so it's not a backend problem.
Oleg.
--
Oleg Broytmann http://phd.pp.ru/ [EMAIL PROTECTED]
Programmers don't die, they just GOSUB without RETURN.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
sqlobject-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss