Kullandığım bir sorguyu (ve temelde ham bir SQL) ActiveRecord yöntemlerini kullanarak bir sorguya dönüştürdüm. Dönüştürmeye çalışmamın nedeni, kapsamları tek tek kullanmam gerektiğidir. Raylar 4 - ActiveRecords yöntemlerini kullanarak sorguya ".find_by_sql" yeniden nasıl yazılır?
find_by_sql("SELECT
COUNT(s.id) AS count_all,
SUM(s.gross_profit) AS sum_gross_profit,
se.user_id,
u.id,
u.first_name,
u.last_name,
u.role
FROM shipments s
INNER JOIN senders se ON se.id = s.sender_id
INNER JOIN users a ON a.id = se.user_id
WHERE ((#{status})
AND (se.admin_id IS NOT NULL)
GROUP BY se.user_id
ORDER BY count_all DESC")
}
Nasıl dönüştürmek için tüm bu
s
,
se
, bir ActiveRecord sorguya
u
adlar ve 2
INNER JOIN
s?
DÜZENLEME:
select("COUNT(shipments.id) AS count_all,
SUM(shipments.gross_profit) AS sum_gross_profit,
senders.admin_id,
users.id,
users.first_name,
users.last_name,
users.role")
.joins("INNER JOIN senders ON senders.id = shipments.sender_id
INNER JOIN users ON users.id = senders.user_id")
.where("((#{status})
AND (senders.admin_id IS NOT NULL)")
.group("senders.user_id")
.order("count_all DESC")
Ama bu böyle sadece çıktıyı verir: denedim ne
{16=>41, 46=>34, 54=>2, 55=>1, 56=>1}:Hash
Soğukta saklama istediğini benziyor
Ne denediniz? AR dokümanı okudun mu? http://guides.rubyonrails.org/active_record_querying.html Birleştirmelere bakın, nerede, sayın, gruplayın. –
Denediğim geçerli sorguyu ekledim .... – user984621
Bu gibi sorgularınız varsa, bunları genellikle en iyi durumda tutmak sql – phoet