I would think a join could get you there in one query. Something like:

users = db((db.auth_user.id==db.auth_membership.user_id) &
                (db.auth_membership.group_id==db.auth_group.id) &
                (db.auth_group.role=='Super admin')).select()
for user in user:
    #do something

The query is messier but I worry that your query is hitting the DB on each 
iteration through the loop (anyone know?). Also note that you have to 
reference the result set differently because of the joins. It would help to 
take a look at "users" in the raw (ie, return dict(users=users) and just 
take a look at the data). It's going to be something like: 
user.auth_user.first_name, etc.

I realize that joins force the more complicated representation but am 
wondering if there are any solutions? For example, could it be made so that 
if we code "select(db.auth_user)" that it only return the auth_user table 
elements?

Reply via email to