Re: [SQLObject] Problems using sqlbuilder JOINS
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: Rick F. <rf...@im...> - 2005-10-13 21:31:03
|
I tried using this recently as well without success using a Postgres Database, but I was able to solve my problem without needing the Join and you might be able to do so as well. Have you read?: http://sqlobject.org/FAQ.html#how-can-i-do-a-left-join Which is linked to from: http://sqlobject.org/SQLObject.html#left-join-and-other-joins At any rate I don't know that the join works so I don't think that part is your fault. -- Rick On Thu, 13 Oct 2005, Sam Nilsson wrote: > Hello, > > I'm having problems getting LEFTJOINOn working (or at least understanding > it). I'm trying to use a tuple of LEFTJOINOn clauses like so: > >>>> from Model.Contact import * >>>> from sqlobject import * >>>> from sqlobject.sqlbuilder import * >>>> c = Contact.select(join=(LEFTJOINOn(None, Address, > Contact.q.id==Address.q.contactID), LEFTJOINOn(None, Country, > Address.q.countryID==Country.q.id))) > > In the resulting query, there are commas between the LEFT JOIN statements. > There is also a comma after contact where it says "FROM contact,". These > commas are syntax errors, and they trigger a mysql exception. > >>>> c[0] > 1/Select : SELECT contact.id, contact.company, contact.first_name, > contact.middle_name, contact.last_name, contact.email, contact.password, > contact.primary_address_id, contact.signed_policy, > contact.account_settings_id FROM contact, LEFT JOIN address ON (contact.id = > address.contact_id), LEFT JOIN country ON (address.country_id = country.id) > WHERE 1 = 1 LIMIT 1 > > Is anyone using multiple JOINS like this? I am basing my approach on the > SQLObject documentation, particularly this section which I will include > below: > -- http://sqlobject.org/SQLObject.html#left-join-and-other-joins > > """ > If you want to join with the primary table - leave the first table None: > > MyTable.select( > join=LEFTJOINOn(None, Table1, > MyTable.q.name == Table1.q.value)) > > will generate the query: > > SELECT * FROM my_table > LEFT JOIN table2 ON my_table.name = table1.value; > > The join argument for .select() can be a JOIN() or a sequence (list/tuple) of > JOIN()s. > """ > > Thanks for your help in identifying my mistake. > - Sam Nilsson > > > ------------------------------------------------------- > This SF.Net email is sponsored by: > Power Architecture Resource Center: Free content, downloads, discussions, > and more. http://solutions.newsforge.com/ibmarch.tmpl > _______________________________________________ > sqlobject-discuss mailing list > sql...@li... > https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss > |