Привет, а кого лучше пнуть, чтобы можно было нормально пользоваться группировкой в postgres? Он же требует перечислять в group_by все поля, перечисленные в select.
Например named_scope :group, :group => 'productgroups.id, productgroups.name и т.д. хорошо, если полей несколько, а если много? Может как-то АР сказать, что SELECT "products".* FROM мне вовсе не надо?
> Например named_scope :group, :group => 'productgroups.id, > productgroups.name и т.д. > хорошо, если полей несколько, а если много? > Может как-то АР сказать, что SELECT "products".* FROM мне вовсе не > надо?
> Привет, а кого лучше пнуть, чтобы
> можно было нормально пользоваться
> группировкой в postgres?
А это они такие правильные. Я
собственно посгрес не люблю за это и
тайпкасты (что вот они все такие
академиццкие
а нам время в трубу спускать).
-- Julik Tarkhanov
m...@julik.nl
>> Привет, а кого лучше пнуть, чтобы
>> можно было нормально пользоваться
>> группировкой в postgres?
> А это они такие правильные. Я
> собственно посгрес не люблю за это и
> тайпкасты (что вот они все такие
> академиццкие
> а нам время в трубу спускать).
2Julik&Gennady: А расскажите, пожалуйста,
какие задачи Вы пытается решить с
помощью группировок ?
> >> Привет, а кого лучше пнуть, чтобы > >> можно было нормально пользоваться > >> группировкой в postgres?
> > А это они такие правильные. Я > > собственно посгрес не люблю за это и > > тайпкасты (что вот они все такие > > академиццкие > > а нам время в трубу спускать).
> 2Julik&Gennady: А расскажите, пожалуйста, > какие задачи Вы пытается решить с > помощью группировок ?
Вообще, это неприятный момент. Попробуй в :select, но по моей практике лучше :select указывать либо один среди всех named_scope, либо вообще в последнем вызове в цепочке.
по личной практике - distinct on в named_scope почти всегда создает неприятные моменты, приходится использовать через find_by_sql...
4 ноября 2009 г. 1:03 пользователь Max Lapshin <max.laps...@gmail.com>написал:
> Вообще, это неприятный момент. Попробуй в :select, но по моей практике > лучше :select указывать либо один среди всех named_scope, либо вообще > в последнем вызове в цепочке.
Чувствую, что у Вас там что-то очень
неправильно. А точнее,
денормализованные данные. Как я понял,
у Вас в таблице с продуктами лежит
информация о продуктовых группах. Вот
вынесите группы в отдельную таблицу,
сразу все станет легко.
> убрать дублирующиеся строки. я и
> сделал, через:select => , но набор
> полей нужен разный.
> On Nov 3, 12:09 pm, Maxim Kulkin <maxim.kul...@gmail.com> wrote:
>> On 03.11.2009, at 12:42, Julik Tarkhanov wrote:
>>> On 02 Nov 2009, at 18:33, Gennady wrote:
>>>> Привет, а кого лучше пнуть, чтобы
>>>> можно было нормально пользоваться
>>>> группировкой в postgres?
>>> А это они такие правильные. Я
>>> собственно посгрес не люблю за это и
>>> тайпкасты (что вот они все такие
>>> академиццкие
>>> а нам время в трубу спускать).
>> 2Julik&Gennady: А расскажите, пожалуйста,
>> какие задачи Вы пытается решить с
>> помощью группировок ?
как знать, какой named_scope окажется последний. да и скорее он в первом scope должен быть, а не в последнем, т.к. должен быть перед списком полей. И, кстати, не факт, что disctinct будет работать быстрее, чем group. Full scan и там и там
On Nov 3, 8:03 pm, Max Lapshin <max.laps...@gmail.com> wrote:
> Вообще, это неприятный момент. Попробуй в :select, но по моей практике > лучше :select указывать либо один среди всех named_scope, либо вообще > в последнем вызове в цепочке.
> Вообще, это неприятный момент. Попробуй в :select, но по моей практике > лучше :select указывать либо один среди всех named_scope, либо вообще > в последнем вызове в цепочке.
1) :select в named_scope всегда будет создавать проблемы. 2) named_scope склеивают в цепочки для организации сужающей фильтрации. Группировка же кардинально меняет природу выдачи, поэтому всё таки за тем, какие там идут :select, стоит следить, особенно учитывая глюки в рельсах в этом плане.
не, тут все нормально. Есть group, product c group_id. Есть еще склад, на котором эти продукты. Было заманчиво для склода сделать named_scope для product, которые есть на складе. Все красиво, пока на складе эти товары из одной партии. При наличии на складе больше одной партии, "вышестоящие" named_scope начинают выдавать лишние строки.
On Nov 3, 8:56 pm, Maxim Kulkin <maxim.kul...@gmail.com> wrote:
> Чувствую, что у Вас там что-то очень > неправильно. А точнее, > денормализованные данные. Как я понял, > у Вас в таблице с продуктами лежит > информация о продуктовых группах. Вот > вынесите группы в отдельную таблицу, > сразу все станет легко.
> On 03.11.2009, at 15:47, Gennady wrote:
> > убрать дублирующиеся строки. я и > > сделал, через:select => , но набор > > полей нужен разный.
> > On Nov 3, 12:09 pm, Maxim Kulkin <maxim.kul...@gmail.com> wrote: > >> On 03.11.2009, at 12:42, Julik Tarkhanov wrote:
> >>> On 02 Nov 2009, at 18:33, Gennady wrote:
> >>>> Привет, а кого лучше пнуть, чтобы > >>>> можно было нормально пользоваться > >>>> группировкой в postgres?
> >>> А это они такие правильные. Я > >>> собственно посгрес не люблю за это и > >>> тайпкасты (что вот они все такие > >>> академиццкие > >>> а нам время в трубу спускать).
> >> 2Julik&Gennady: А расскажите, пожалуйста, > >> какие задачи Вы пытается решить с > >> помощью группировок ?
> 1) :select в named_scope всегда будет создавать проблемы. > 2) named_scope склеивают в цепочки для организации сужающей > фильтрации. Группировка же кардинально меняет природу выдачи, поэтому > всё таки за тем, какие там идут :select, стоит следить, особенно > учитывая глюки в рельсах в этом плане.
> не, тут все нормально. Есть group, product c
> group_id. Есть еще склад,
> на котором эти продукты. Было
> заманчиво для склода сделать named_scope
> для product, которые есть на складе. Все
> красиво, пока на складе эти
> товары из одной партии. При наличии на
> складе больше одной партии,
> "вышестоящие" named_scope начинают
> выдавать лишние строки.
> On Nov 3, 8:56 pm, Maxim Kulkin <maxim.kul...@gmail.com> wrote:
>> Чувствую, что у Вас там что-то очень
>> неправильно. А точнее,
>> денормализованные данные. Как я
>> понял,
>> у Вас в таблице с продуктами лежит
>> информация о продуктовых группах. Вот
>> вынесите группы в отдельную таблицу,
>> сразу все станет легко.
>> On 03.11.2009, at 15:47, Gennady wrote:
>>> убрать дублирующиеся строки. я и
>>> сделал, через:select => , но набор
>>> полей нужен разный.
>>> On Nov 3, 12:09 pm, Maxim Kulkin <maxim.kul...@gmail.com> wrote:
>>>> On 03.11.2009, at 12:42, Julik Tarkhanov wrote:
>>>>> On 02 Nov 2009, at 18:33, Gennady wrote:
>>>>>> Привет, а кого лучше пнуть, чтобы
>>>>>> можно было нормально пользоваться
>>>>>> группировкой в postgres?
>>>>> А это они такие правильные. Я
>>>>> собственно посгрес не люблю за это и
>>>>> тайпкасты (что вот они все такие
>>>>> академиццкие
>>>>> а нам время в трубу спускать).
>>>> 2Julik&Gennady: А расскажите, пожалуйста,
>>>> какие задачи Вы пытается решить с
>>>> помощью группировок ?
class Store < ActiveRecord::Base belongs_to :product belongs_to :warehouse named_scope :avail, :conditions => "rest > 0" end rest - остаок, integer. В Store одновременно может быть более одного product c rest > 0, причем у них есть другие атрибуты, которые здесь не важны. Идея состояла в получении списка товаров и групп товаров, которые есть в данный момент на складе через named_scope типа Product.stores_avail.group, Productgroup.products_stores_avail.group Named_scope Productgroup.products_stores_avail выдаст кучу дублирующихся строк, массив через .uniq обрабатывается медленнее.