Size: a a a

2020 February 19

R

Roman in Ruby School .us
ProposalEmployee.join(:order).where(interview_date: DateTime.now.beginning_of_day..DateTime.now.end_of_day).group('order.profile_id')
источник

И

Иван in Ruby School .us
Roman
mysql 5.7
хз я с mysql не работал, в пг это можно через distinct on сделать который выбирает 1 запись из каждой группы, в mysql какие то свои техники для этого
источник

И

Иван in Ruby School .us
а что значит что ты теряешь записи? там по идее не консистентность результата может быть, но записи то все должны присутствовать
источник

R

Roman in Ruby School .us
я до этого работал на мускуле только на пхп, а тут боишся что прод упадёт
источник

R

Roman in Ruby School .us
output error: #<ActiveRecord::StatementInvalid: Mysql2::Error: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column '.....proposal_employees.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by: SELECT proposal_employees.* FROM proposal_employees INNER JOIN orders ON orders.id = proposal_employees.order_id WHERE proposal_employees.interview_date BETWEEN '2020-02-18 21:00:00' AND '2020-02-19 20:59:59' GROUP BY orders.profile_id>
источник

И

Иван in Ruby School .us
какой результат ты хочешь получить?
источник

R

Roman in Ruby School .us
Иван  proposal_employees сгрупированные по order.profile_id
источник

R

Roman in Ruby School .us
воля
ProposalEmployee.joins(:order).where(interview_date: DateTime.now.beginning_of_day..DateTime.now.end_of_day).select('proposal_employees.*').group_by { |pr| pr.order.profile_id }
появляются паразитные запросы
источник

R

Roman in Ruby School .us
либо через связь в общем также
источник

И

Иван in Ruby School .us
ну вот смотри, при группировке по order.profile_id у тебя условно получается множество групп, но какую именно записись ты ожидаешь увидеть из каждой группы в результате?
источник

R

Roman in Ruby School .us
мне нужна proposal_employees
источник

R

Roman in Ruby School .us
просто что бы была расгрупированна по тому условию
источник

И

Иван in Ruby School .us
а так тебе все записи из каждой группы нужны что ли?
источник

И

Иван in Ruby School .us
а как ты эту группировку в табличном виде представляешь? тот запрос с group_by вернет хэш, это уже не просто результат запроса скл, руби его обрабатывает и возвращает соврешенно другую струтктуру данных
источник

R

Roman in Ruby School .us
да чтото должно быть типо
{
122 => [
p_e,
p_e
],
124=> [ p_e, p_e]}
источник

R

Roman in Ruby School .us
ProposalEmployee Load (2.4ms)  SELECT proposal_employees.* FROM proposal_employees INNER JOIN orders ON orders.id = proposal_employees.order_id WHERE proposal_employees.interview_date BETWEEN '2020-02-18 21:00:00' AND '2020-02-19 20:59:59'
 Order Load (0.7ms)  SELECT  orders.* FROM orders WHERE orders.id = 86 LIMIT 1
 Order Load (0.8ms)  SELECT  orders.* FROM orders WHERE orders.id = 43 LIMIT 1
 Order Load (0.7ms)  SELECT  orders.* FROM orders WHERE orders.id = 87 LIMIT 1
 Order Load (0.6ms)  SELECT  orders.* FROM orders WHERE orders.id = 43 LIMIT 1
 Order Load (0.6ms)  SELECT  orders.* FROM orders WHERE orders.id = 81 LIMIT 1
=> {
   188 => [
       [0] #<ProposalEmployee:0x0000564f6a615cf0> {
                              :id => 295,
                     :proposal_id => nil,
                        :order_id => 86,
                      :profile_id => 228,
                  :employee_cv_id => 13395,
                      :date_hired => nil,
                           :state => "revoked",
                           :marks => {
               "viewed_by_customer" => true
           },
                      :created_at => Sat, 08 Feb 2020 19:30:40 MSK +03:00,
                      :updated_at => Mon, 10 Feb 2020 14:44:45 MSK +03:00,
                     :hiring_date => nil,
                     :firing_date => nil,
                   :warranty_date => nil,
            :hd_correction_reason => nil,
                    :arrival_date => nil,
           :hiring_date_corrected => nil,
                  :interview_date => Wed, 19 Feb 2020 00:00:00 MSK +03:00,
                    :dst_order_id => nil,
                    :payment_date => nil,
               :approved_by_admin => false
       }
   ],
     7 => [
источник

И

Иван in Ruby School .us
ну если ты хочешь это чисто скл запросом решить, без group_by, то можешь заселектить дополнительное поле orders.profile_id и отсортировать по нему все результаты
источник

И

Иван in Ruby School .us
если хочешь через group_by это решить, то вместо join сделай includes что бы не было n+1 запросов
источник

И

Иван in Ruby School .us
а sql group это вообще не про твой случай
источник

R

Roman in Ruby School .us
Иван большое спасибо
источник