Bir yönetici için kullanıcıları görmek, kaç kullanıcıyı davet ettikleri ve bu kullanıcılardan kaçının aboneliği için ödeme yaptıklarını anlamak için temel bir tablo oluşturmaya çalışıyorum. zayıflayan tablolar şu şekilde görünür:Toplam sayım verileri dahil olmak üzere sorgu nesnesi
User: id, email
Referral: id, inviter_id <- (maps to user_id), paid_at (date, is either nil or set)
I having Sonra görünümüne seti dönmeden önce, sonra sayfalama sıralamayı yapmak, veri toplamak için ihtiyaç olmasıdır. Mümkünse tam kullanıcı nesnesine sahip olmak istiyorum, ancak mümkün olmadığında ihtiyacım olan alanlara yerleştim.
aşağıdaki yeniden işleme çalışıyorum: Bu bana{ id: count }
karmasını döndüren
User.joins(:referrals).group('users.id').count('referrals.id')
. paid_at IS NOT NULL
ile sonuçları nasıl elde edebilirim ve hatta bunları anahtar değer çiftleri olarak alabilirim? Katılmayı deniyorum ama bunun nasıl yapılacağına dair bir kayıp yaşıyorum, herhangi bir yardım büyük beğeni topluyor.
:
sadece kimliği ve e-posta döner AncakUser.joins(:referrals).select('users.id, users.email, count(referrals.id)').group('users.id, users.email')
, ben tahmin ediyorum ActiveRecord modeli referrals_count için bir alan olmadığı için:
Ben de bu sorguyu denedim .
DÜZENLEME: Katma SQL
SELECT
users.id,
users.email,
COUNT(DISTINCT(r1.id)) AS referrals_count,
COUNT(DISTINCT(r2.id)) AS paid_referrals_count
FROM
users
LEFT JOIN
referrals AS r1 ON users.id = r1.inviter_id AND
r1.accept_at IS NOT NULL
LEFT JOIN
referrals AS r2 ON r1.id = r2.id AND
r2.paid_at IS NOT NULL
GROUP BY
users.id, users.email
ORDER BY
paid_referrals_count
yukarıdaki sql çalışırsa emin değilim, ben elde etmeye çalışıyordu hangi verilerin bir ilk geçiş oldu.
paylaşın SQL sorgusu, "tercüme" için başlangıçtaki test günü –