I'm tryng to do something similar to what i saw at web2py book but i need them to be distinct
Book: http://web2py.com/books/default/chapter/29/6#Grouping-and-counting count = db.person.id.count() for row in db(db.person.id==db.dog.owner).select(db.person.name, count, groupby=db.person.name): print row.person.name, row[count] What I'm trying: count = db.contadores.id_impressora.count() for row in db((db.contadores.id >0)&(db.contadores.data<=today)).select(db.contadores.data,count,groupby=db.contadores.data): print row.contadores.data, row[count] In the book its mentioned the distinct argument but I couldn't use it in this case Em sexta-feira, 9 de março de 2012 15h25min36s UTC-3, Massimo Di Pierro escreveu: > > This API is not defined: > > db.contadores._count() > > What do expect it to do? You can do: > > db(db.contadores).count() > db(db.contadores)._count() > > On Friday, 9 March 2012 11:25:14 UTC-6, Fabiano Faver wrote: >> >> Same thing... >> >> print db(db.contadores.id>0)._count() - it respond a sql (with or >> without argument) >> print db.contadores._count() - it does not work >> >> Traceback (most recent call last): >> File "C:\web2py\gluon\restricted.py", line 205, in restricted >> exec ccode in environment >> File "C:/web2py/applications/OPM/controllers/default.py" >> <http://127.0.0.1:8000/admin/default/edit/OPM/controllers/default.py>, line >> 614, in <module> >> File "C:\web2py\gluon\globals.py", line 173, in <lambda> >> self._caller = lambda f: f() >> File "C:\web2py\gluon\tools.py", line 2575, in f >> return action(*a, **b) >> File "C:\web2py\gluon\tools.py", line 2575, in f >> return action(*a, **b) >> File "C:/web2py/applications/OPM/controllers/default.py" >> <http://127.0.0.1:8000/admin/default/edit/OPM/controllers/default.py>, line >> 529, in timeline_opm >> count = db.contadores._count() >> File "C:\web2py\gluon\dal.py", line 6774, in __getattr__ >> return self[key] >> File "C:\web2py\gluon\dal.py", line 6714, in __getitem__ >> return dict.__getitem__(self, str(key)) >> KeyError: '_count' >> >> >> Em sexta-feira, 9 de março de 2012 12h31min01s UTC-3, Fabiano Faver >> escreveu: >>> >>> I'm using version 1.99.4. >>> I will test it in 1.99.7 to see if it stop giving this error >>> >>> Em sexta-feira, 9 de março de 2012 12h21min22s UTC-3, Niphlod escreveu: >>>> >>>> last version is working ok (1.99.7), what web2py version are you using ? >>>> >>>> if db.contadores is a table, then it definitely has a "_count" method... >>>> >>>> >>>> >>>> Il giorno venerdì 9 marzo 2012 15:55:42 UTC+1, Fabiano Faver ha scritto: >>>>> >>>>> Niphlod, this is what i got, using distinct argument or not: >>>>> >>>>> Traceback (most recent call last): >>>>> File "C:\web2py\gluon\restricted.py", line 204, in restricted >>>>> exec ccode in environment >>>>> File "C:/web2py/applications/OPM/controllers/default.py" >>>>> <http://127.0.0.1:8000/admin/default/edit/OPM/controllers/default.py>, >>>>> line 613, in <module> >>>>> File "C:\web2py\gluon\globals.py", line 172, in <lambda> >>>>> self._caller = lambda f: f() >>>>> File "C:\web2py\gluon\tools.py", line 2533, in f >>>>> return action(*a, **b) >>>>> File "C:\web2py\gluon\tools.py", line 2533, in f >>>>> return action(*a, **b) >>>>> File "C:/web2py/applications/OPM/controllers/default.py" >>>>> <http://127.0.0.1:8000/admin/default/edit/OPM/controllers/default.py>, >>>>> line 528, in timeline_opm >>>>> print db.contadores._count(distinct=db.contadores.id_impressora) >>>>> File "C:\web2py\gluon\dal.py", line 5542, in __getattr__ >>>>> return self[key] >>>>> File "C:\web2py\gluon\dal.py", line 5482, in __getitem__ >>>>> return dict.__getitem__(self, str(key)) >>>>> KeyError: '_count' >>>>> >>>>> >>>>> >>>>> @Bruno >>>>> While I can`t get all grouped records at once I am query them >>>>> individually one by one using argument distinct >>>>> >>>>> for dias in range(loop_back): >>>>> d = timedelta(days=dias) >>>>> dias_passado = dia_hoje - d >>>>> header.append(TH(dias_passado.strftime("%d/%m"),_width='60px')) >>>>> contador_no_dia = db((db.contadores.id >>>>> >0)&(db.contadores.data==dias_passado)).count(distinct=db.contadores.id_impressora) >>>>> >>>>> Em sexta-feira, 9 de março de 2012 10h54min59s UTC-3, Niphlod escreveu: >>>>>> >>>>>> ooops, sorry, the _count method is on the table, not the field >>>>>> try with >>>>>> >>>>>> db.contadores._count(distinct=db.contadores.id_impressora) >>>>>> >>>>>> >>>>>> >>>>>> Il giorno venerdì 9 marzo 2012 13:37:16 UTC+1, Fabiano Faver ha >>>>>> scritto: >>>>>>> >>>>>>> I have phpmyadmin to test it but I didn`t manage to get the >>>>>>> generated sql using underline. >>>>>>> >>>>>>> with or without distinct argument it gives >>>>>>> >>>>>>> Traceback (most recent call last): >>>>>>> File "C:\web2py\gluon\restricted.py", line 204, in restricted >>>>>>> exec ccode in environment >>>>>>> File "C:/web2py/applications/OPM/controllers/default.py" >>>>>>> <http://127.0.0.1:8000/admin/default/edit/OPM/controllers/default.py>, >>>>>>> line 610, in <module> >>>>>>> File "C:\web2py\gluon\globals.py", line 172, in <lambda> >>>>>>> self._caller = lambda f: f() >>>>>>> File "C:\web2py\gluon\tools.py", line 2533, in f >>>>>>> return action(*a, **b) >>>>>>> File "C:\web2py\gluon\tools.py", line 2533, in f >>>>>>> return action(*a, **b) >>>>>>> File "C:/web2py/applications/OPM/controllers/default.py" >>>>>>> <http://127.0.0.1:8000/admin/default/edit/OPM/controllers/default.py>, >>>>>>> line 529, in timeline_opm >>>>>>> print >>>>>>> db.contadores.id_impressora._count(distinct=db.contadores.id_impressora) >>>>>>> AttributeError: 'Field' object has no attribute '_count' >>>>>>> >>>>>>> >>>>>>> Em sexta-feira, 9 de março de 2012 09h13min01s UTC-3, Niphlod >>>>>>> escreveu: >>>>>>>> >>>>>>>> ok, can you print here what is the result of : >>>>>>>> >>>>>>>> >>>>>>>> db.contadores.id_impressora._count(distinct=db.contadores.id_impressora) >>>>>>>> >>>>>>>> (mind the _ before count.) >>>>>>>> >>>>>>>> If you can fire off queries on your db using another tool than >>>>>>>> web2py (let's say, phpmyadmin), try to copy the resulting string into >>>>>>>> that >>>>>>>> and watch if the query raises an error. >>>>>>>> >>>>>>>> Il giorno venerdì 9 marzo 2012 13:02:49 UTC+1, Fabiano Faver ha >>>>>>>> scritto: >>>>>>>>> >>>>>>>>> MySQL >>>>>>>>> >>>>>>>>> Em sexta-feira, 9 de março de 2012 08h59min46s UTC-3, Niphlod >>>>>>>>> escreveu: >>>>>>>>>> >>>>>>>>>> what db are you using ? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Il giorno giovedì 8 marzo 2012 15:20:17 UTC+1, Fabiano Faver ha >>>>>>>>>> scritto: >>>>>>>>>>> >>>>>>>>>>> I`m trying to select distinct printers used in each day but i`m >>>>>>>>>>> not managing to use the distinct argument >>>>>>>>>>> >>>>>>>>>>> count = db.contadores.id_impressora.count() >>>>>>>>>>> for row in db((db.contadores.id >>>>>>>>>>> >0)&(db.contadores.data<=today)).select(db.contadores.data,count,groupby=db.contadores.data): >>>>>>>>>>> print row.contadores.data, row[count] >>>>>>>>>>> >>>>>>>>>>> if I use something like >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> db.contadores.id_impressora.count(distinct=db.contadores.id_impressora) >>>>>>>>>>> >>>>>>>>>>> it gives: >>>>>>>>>>> >>>>>>>>>>> Traceback (most recent call last): >>>>>>>>>>> File "C:\web2py\gluon\restricted.py", line 204, in restricted >>>>>>>>>>> exec ccode in environment >>>>>>>>>>> File "C:/web2py/applications/OPM/controllers/default.py" >>>>>>>>>>> <http://127.0.0.1:8000/admin/default/edit/OPM/controllers/default.py>, >>>>>>>>>>> line 581, in <module> >>>>>>>>>>> File "C:\web2py\gluon\globals.py", line 172, in <lambda> >>>>>>>>>>> self._caller = lambda f: f() >>>>>>>>>>> File "C:/web2py/applications/OPM/controllers/default.py" >>>>>>>>>>> <http://127.0.0.1:8000/admin/default/edit/OPM/controllers/default.py>, >>>>>>>>>>> line 516, in timeline_opm >>>>>>>>>>> count = >>>>>>>>>>> db.contadores.id_impressora.count(distinct=('id_impressora')) >>>>>>>>>>> TypeError: count() got an unexpected keyword argument 'distinct' >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> How can I use distinct count here? >>>>>>>>>>> >>>>>>>>>>

