I didn't realize you were on GAE. I'm not quite sure how GAE handles this, 
so perhaps someone with more GAE experience can chime in. In an RDBMS, you 
should be able to do:

board_ids = set([a.board for a in articles])
boards = db(db.boards.id.belongs(board_ids)).select()

But not sure if that works on GAE.

Anthony

On Wednesday, March 21, 2012 7:30:58 PM UTC-4, Udi Milo wrote:
>
> Anthony,
>
> Thanks for answering so quickly.
> I did mean board and not board_id
>
> My question is very basic.
> I know that the article table has an Id column that is really the board 
> reference, but when I look at the result of the query and unification of:
> board_ids = set(map(lambda a: a.board, articles))
>
> I get a set of references,
> how do I use that set in another query to get all the boards?
> also, just to be sure, running this lambda expression does not hit the db 
> to fetch the boards, right?
>
> I can't use join b/c I'm running on GAE.
>
>
>
> On Wednesday, March 21, 2012 5:22:50 PM UTC-4, Anthony wrote:
>>
>> I have two db tables:
>>>
>>> board (name, created_on)
>>> article(board, name, title)
>>>
>>> currently, in my html I do a naive loop {{for article in articles}} {{=
>>> article.board.name}} {{pass}}
>>>
>>> I would like to change it and do something like:
>>> articles = db.select.all.......
>>> board_ids = set(map(lambda a: a.board_id, articles))
>>>
>>
>> Instead of a.board_id, do you mean a.board (I don't see a "board_id" 
>> field listed in your article table definition)? Also, is db.article.board a 
>> reference field to the db.board table? In that case, that means it is 
>> already storing the id of the referenced record in the db.board table 
>> (that's what reference fields store), so you don't need to retrieve it 
>> separately.
>>
>> Anyway, if you need the db.board.name value for all the records you are 
>> selecting from the db.article table, you should probably just do a join so 
>> you can get everything in a single query -- see 
>> http://web2py.com/books/default/chapter/29/6#Inner-joins.
>>  
>> Anthony
>>
>>

Reply via email to