My example is written in a previous post. Last one before today. What is in book and what im trying to do. Em 13/07/2012 14:26, "Massimo Di Pierro" <[email protected]> escreveu:
> What need to be distinct? can you provide an example of data? > > On Friday, 9 March 2012 13:51:25 UTC-6, Fabiano Faver wrote: >> >> 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<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.i**d_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.co**unt(distinct=('id_impressora')**) >>>>>>>>>>>>> TypeError: count() got an unexpected keyword argument 'distinct' >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> How can I use distinct count here? >>>>>>>>>>>>> >>>>>>>>>>>>

