On 04/14/2011 08:46 AM, ron_m wrote:
The _select is a nested select - the one in the second half of the WHERE clause that Christian wrote out for the SQL equivalent.

But the _select needs to return exactly one column, try changing _select() to _select(db.user_tags.tag)

There is some discussion in the manual under the belongs topic

Ron
I see a bit better now, and it kind of works.
{'users_tags': {'user': 1}, '_extra': {'COUNT(users_tags.id)': 1}}
{'users_tags': {'user': 3}, '_extra': {'COUNT(users_tags.id)': 2}}
This represents one user having a relation on tags between two users, very cool, but I want the users information, and doing a query on each user is the inefficient way to do it right? I should join them, and I know how to do that, but this one, I have no idea.

    count = db.users_tags.id.count()

    query = db((db.users_tags.user != auth.user.id)&           #\/-- isn't that 
the join?

               
(db.users_tags.tag.belongs(db(db.users_tags.user==auth.user.id)._select(db.users_tags.tag))))

                                                               #/\--- Right 
there?

    rows = query.select(db.users_tags.user,

                        count,

                        groupby=db.users_tags.user,

                        orderby=count)

    for row in rows:

        print row.as_dict()


Best Regards,
Jason

Reply via email to