I believe that example of counting contains is in the book, so to anyone
who didn't read the book this is new, however, the example was kind of
confusing. I remember reading about it on the newsgroup that someone
couldn't understand what was going on. You give a good example of how to
rewrite that part of the book.
On Wednesday, July 24, 2013 9:54:18 AM UTC-7, VP wrote:
>
> Maybe this was obvious, but I never thought I could do this kind of
> queries in DAL.
>
> Okay, let's say I have 2 tables:
>
> Tags = db.define_table('tag', Field('name'))
> Post = db.define_table('post', Field('title'), Field('tag', 'reference
> tag'))
>
>
> Now, doing a join is easy using the query *(db.post.tag == db.tag.id)*
>
> But if I have the following 2 tables, where a post might have many tags:
>
> Tags = db.define_table('tag', Field('name'))
> Post = db.define_table('post', Field('title'), Field('tag',
> 'list:reference tag'))
>
> How do I select tags that occur in posts? It turns out that this can be
> done very nice using the query: *db.post.tag.contains( db.tag.id )*
> *
> *
> I have used "contains", but I had thought that the argument for it must be
> a constant (e.g. a specific tag such as "news"), not something like
> db.tag.id.
>
> Nice.
>
> Counting tags occurrence (e.g. if you want to have a tag cloud) turns out
> to be quite simple: *db( db.post.tag.contains(db.tag.id)
> ).select(db.tag.ALL, db.tag.id.count(), groupby=db.tag.name)*
>
> Nice!!
>
>
--
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.