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