Diez B. Roggisch schrieb:
> miya schrieb:
>> Hi!, I'm having this little problem.
>>
>> I want to do sth like this...
>>
>> User.select().orderBy('email_addresses')
>>
>> where email_addresses is  defined in the User.py class ( the model one)
>>
>> class User(SQLObject):
>> ...
>> ...
>>     email_addresses = RelatedJoin('Email')
>> ...
>> ...
>>
>>
>> class Email(SQLObject):
>> ...
>> ...
>>     users = RelatedJoin("User")
>> ...
>> ...
>>
>> SQLObject creates a new table called email_tg_user, where the
>> many-to-many relationship takes place.
>> I want to select all the users ordered by their email addresses.
>>
>> I thought that I could do User.select().orderBy('email_addresses'), but
>> it turns out that the column email_addresses does not exist. I checked
>> this out using the tg-admin sql sql command.
>>
>> but if I first try to  select all the users and then show their email
>> addresses it works, but I cant show them in order
>>
>>>>> users = User.select()
>>>>> for user in users:
>> ...     print user.email_address
>> ...
>> [<Email 1 email="u'[EMAIL PROTECTED]'">, <Email 4
>> email="u'[EMAIL PROTECTED]'">, <Email 7 email=u'[EMAIL PROTECTED]'>]
>> [<Email 2 email="u'[EMAIL PROTECTED]'">, <Email 3
>> email="u'[EMAIL PROTECTED]'">, <Email 7 email=u'[EMAIL PROTECTED]'>]
>> [<Email 5 email="u'[EMAIL PROTECTED]'">, <Email 6
>> email="u'[EMAIL PROTECTED]'">]
>>
>> So my question is, How can I select all the users ordered by their
>> email addreses?
>> How can I do this using SQL code? I mean, how can I execute native SQL
>> code in SQLObject?
> 
> You need to join the tables, as in SQL.
> 
> User.select(User.q.id == Email.q.id, orderBy=Email.q.email)

I'm sorry, this does not reflect your model. For such a case, you need 
to define a table alias, and join the three tables:


users2emails = TableAlias('email_tg_user', 'email_tg_user')

User.select(AND(User.q.id == users2emails.q.user_id,  Email.q.id == 
users2emails.q.email_id), orderBy=Email.q.email)

Diez

--~--~---------~--~----~------------~-------~--~----~
 You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to