>
> person = db(db.person.name='....').select().first()
>> papers = db.paper.authors.contains(person.id).select()
>>
>
> Sorry, I didn't read carefully enough. That's not what I need, I need to
perform a join. My real-world query is rather like:
db.define_table('person',
Field('name', unique=True),
Field('some_field'),
)
Advisor = db.person.with_alias('advisor')
GradStudent = db.person.with_alias('grad')
db.define_table('thesis_project',
Field('advisors', 'list:reference person'),
Field('candidate', db.person),
Field('title', 'text')
)
and then:
db( db.thesis_project.advisors.contains(Advisor.id) &
(db.thesis_project.candidate==GradStudent.id) &
(Advisor.some_field==some_value) &
(GradStudent.some_field==some_value)).select(...)
and it works in mysql using INSTR and CONCAT, and there are other solutions
with other functions that don't seem to work in sqlite, even though some of
them are advertised. That's my puzzle.
--