Ich versuche, aus der Statistiktabelle den letzten Datensatz vom letzten Tag jedes Kunden zu erhalten. Ich möchte den Kunden mit den meistverkauften Artikeln des letzten Tages auswählen.Wählen Sie aus allen Kunden den letzten Datensatz in Rails
Die Statistiken werden jede Stunde generiert, so dass es mehrere Statistiken vom Kunden gibt, aber ich brauche nur die letzte.
Ich habe mehrere Befehle versucht, ich erhalte nur Fehler.
Statistic.where("created_at < ?",1.day.ago).select(:customer_id).distinct.order(created_at: :desc)
oder
Statistic.where("created_at < ?",1.day.ago).select(:customer_id).distinct.last
Ist die beste Lösung mit zupfen? Oder soll ich 2 selects erstellen? Ich habe keine Ahnung, wo ich 'sold_items' platzieren soll.
das könnte auch eine Lösung sein, aber ich bin mir nicht sicher.
Customer.all.each do |customer|
stats = customer.statistics.where("created_at < ?",Date.today).last
count = stats.sold_items if stats.sold_items > count
best = customer if count = stats.sold_items
end
Die Models: Kunde has_many: Statistik - Statistik belongs_to: Kunden
könnten Sie bitte Modelldeklarationen hinzufügen? Um Ihre erste Anfrage zu bearbeiten, sollten Sie eine Verknüpfung erstellen. also die zweite. – marmeladze
Haben Sie eine 'has_many'' gehört_to' Beziehung zwischen Ihren 'Kunden' und' Statistics' Modellen? – sa77
Rechts. Kunde has_many: Statistik und Statistik gehört zu: Kunde –