On Mon, Mar 10, 2008 at 08:57:35AM -0700, Daniel Fetchinson wrote:
> On Mon, Mar 10, 2008 at 3:12 AM, Oleg Broytmann <[EMAIL PROTECTED]> wrote:
> > On Sun, Mar 09, 2008 at 08:52:28PM -0700, Daniel Fetchinson wrote:
> > > class zoo( SQLObject ):
> > > cages = MultipleJoin( 'cage' )
> > >
> > > class cage( SQLObject ):
> > > zoo = ForeignKey( 'zoo' )
> > > animals = MultipleJoin( 'animal' )
> > > properties = RelatedJoin( 'property' )
> > >
> > > class animal( SQLObject ):
> > > cage = ForeignKey( 'cage' )
> > > properties = RelatedJoin( 'property' )
> > >
> > > class property( SQLObject ):
> > > animals = RelatedJoin( 'animal' )
> > > cages = RelatedJoin( 'cage' )
> > >
> > >
> > > What would be the select call for selecting all properties for a given
> > > zoo instance?
> >
> > SQLObject cannot automagically construct such a comple SQL query. You
> > can do it in Python:
> >
> > z = zoo.get(id)
> > zoo_properties = []
> > for c in z.cages:
> > for a in c.animals:
> > for p in a.properties:
> > zoo_properties.append(p)
>
> Thanks, this is the approach I had so far, but I thought some clever join
> construction would do it if done right.
Yes, it is possible, but in a rather complex way. You have to declare
all intermediate tables for RelatedJoins and manually construct a complex
join like
property.select(
(property.q.id == property_animal.q.property_id) &&
(animal.q.id == property_animal.q.animal_id) &&
(animal.q.cage_id == cage.q.id) &&
(cage.q.zoo_id == z.id)
)
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: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
sqlobject-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss