ooookey, I finally got it (I guess). Men, sometimes reading through lines of posts without examples is hard!
@all: we're circling around here because no distinctions were properly made in this thread for count() as a method attached to the Field vs the count() method attached to the table. @Fabiano (and everyone else reading this and wanting help on "advanced queries"): one example with a little data is worth more than a thousand word. @all: time for examples. tests.id <http://127.0.0.1:8000/tests/appadmin/select/db?orderby=tests.id> tests.id_impressora<http://127.0.0.1:8000/tests/appadmin/select/db?orderby=tests.id_impressora> tests.data<http://127.0.0.1:8000/tests/appadmin/select/db?orderby=tests.data> 1 <http://127.0.0.1:8000/tests/appadmin/update/db/tests/1> abcd2012-07-132<http://127.0.0.1:8000/tests/appadmin/update/db/tests/2> abcd2012-07-133 <http://127.0.0.1:8000/tests/appadmin/update/db/tests/3> fghi2012-07-134 <http://127.0.0.1:8000/tests/appadmin/update/db/tests/4> lmno2012-07-135 <http://127.0.0.1:8000/tests/appadmin/update/db/tests/5> lmno2012-07-136 <http://127.0.0.1:8000/tests/appadmin/update/db/tests/6> abcd2012-07-12 Now, what I think Fabiano wants is: 2012-07-12 1 2012-07-13 3 i.e. How many distinct id_impressora values are in the table, grouped by data ? Current DAL doesn't allow this. You can count how many rows there are for every data. db(db.tests.id>0).select(db.tests.data, db.tests.id_impressora.count(), groupby=db.tests.data) 2012-07-12 1 2012-07-13 5 You can count how many distinct records of id_impressora are in the table. db(db.tests.id>0).count(db.tests.id_impressora) 3 And that's pretty much all about it. @Massimo: now: db(db.tests.id>0)._count(db.tests.id_impressora) SELECT count(DISTINCT id_impressora) FROM tests WHERE (tests.id > 0); a) add a groupby parameter to the count() method on the table. db(db.tests.id>0)._count('id_impressora', groupby=db.tests.data) SELECT count(DISTINCT id_impressora), tests.data FROM tests WHERE (tests.id > 0) GROUP BY tests.data however, to be of some significance when grouping by something the field itself should be included into the select b) add a distinct parameter to the count() method on the field db(db.tests.id>0)._select(db.tests.id_impressora.count(distinct=True), db.tests.data, groupby=db.tests.data) SELECT count(DISTINCT id_impressora), tests.data FROM tests WHERE (tests.id >0) GROUP BY tests.data I vote for b.

