I would prefer use "sql join on" syntax, but this way it finally works as expected :
role1_test_set = db((db.auth_group.role=='role1_test') & (db.auth_user.id==db.auth_membership.user_id) & (db.auth_membership.group_id==db.auth_group.id)) db.test_test1.role.requires=\ IS_EMPTY_OR(IS_IN_DB(role1_test_set,'auth_user.id','%(first_name)s %(last_name)s (%(initials)s)',multiple=True)) Richard On Tue, Aug 23, 2011 at 2:44 PM, Richard <ml.richard.vez...@gmail.com>wrote: > Hello, > > I am trying to make proper set to be use as a IS_IN_DB, but for > building the set I need to join on 2 tables... IS_IN_DB() doesn't > seems to like my set... > > Here my query that works and that I try to pass as a set... I know > that it is not a set but a select... But how to make a left join in a > set? > > role1_set = > db(db.auth_group.role=='role1_test').select(db.auth_user.ALL, > > left=[db.auth_membership.on(db.auth_user.id==db.auth_membership.user_id), > > db.auth_group.on(db.auth_membership.group_id==db.auth_group.id)]) > > Thanks. > > Richard > >