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?
>>>>>>>>>>>
>>>>>>>>>>

Reply via email to