FYI, distinct is the same as "group by all".

On Saturday, September 22, 2012 3:18:32 PM UTC-7, Massimo Di Pierro wrote:
>
> Looks like postgres is picky and wants in groupby all the selected fields 
> in distinct. This should work:
>
> rows = db(data.id==tag.record_id)\
>     (tag.name.belongs(tags)).select(
>        data.ALL,
>        orderby=data.id,
>        groupby=data.id|data.value,
>        distinct=True)
>
> On Saturday, 22 September 2012 15:00:07 UTC-5, andrej burja wrote:
>>
>> the code with problem:
>>
>> rows = db(data.id==tag.record_id)\
>>     (tag.name.belongs(tags)).select(
>>        data.ALL,
>>        orderby=data.id,
>>        groupby=data.id,
>>        distinct=True)
>>
>>
>>
>> On Saturday, September 22, 2012 10:26:27 AM UTC+2, andrej burja wrote:
>>>
>>> hi 
>>>
>>> i would like to use idea in book Application Development Cookbook - 
>>> Efficienty search by tag. 
>>> there are two functions: 'search_or' and 'search_and'
>>> everything is working fine on sqlite
>>> when i switch to postgres, there seems to be problem with 'groupby'. 
>>> i got an error 
>>>
>>> <class 'psycopg2.ProgrammingError'> column "data.value" must appear in 
>>> the GROUP BY clause or be used in an aggregate function LINE 1: SELECT 
>>> DISTINCT data.id, data.value FROM tag, data WHERE ((d... ^
>>> when i remove 'groupby=....id" there is no error, but (of course) 
>>> 'search_and' function doesn't work properly
>>>
>>> is this a bug related to postgres?
>>>
>>> andrej
>>>
>>

-- 



Reply via email to