J'ai un modèle de modèle Rails appelé Orders qui a un type_id, un emplacement et un prix. Chaque type peut avoir plusieurs commandes au même endroit avec des prix différents. Vérifiez ci-dessous pour une idée de la structure de la table.Ruby on Rails obtient des enregistrements par prix le plus élevé
id | type_id | location_id | price
-----------------------------------
1 | 1 | 1 | 12
2 | 1 | 1 | 14
3 | 1 | 1 | 9
4 | 2 | 1 | 1
5 | 2 | 1 | 4
6 | 3 | 1 | 15
7 | 3 | 1 | 7
Je suis désireux essentiellement de sélectionner tous les enregistrements par type_id en utilisant IN
exemple:
type_ids = "1,2,3"
location_id = 1
Order.find(:all, :conditions => ["location_id = ? and type_id in (?)", location_id, type_ids])
Je veux seulement sélectionner l'enregistrement avec le prix le plus élevé pour chaque type à cet endroit, de sorte que le résultat l'ensemble ramènerait les enregistrements avec l'ID 2, 5 et 6.
Je n'arrive pas à trouver la requête de recherche pour cela, j'espère que vous comprenez ce que je veux dire. Si ce n'est pas demander, je peux essayer et expliquer mieux.
Vive
Eef
J'ai d'abord écrit l'application en PHP et je faisais une requête à la base de données pour chaque type, ça fonctionnait bien. Je n'aurai jamais plus de 44 types, donc je pense que je vais peut-être adopter une approche plus simple, mais je vais aussi donner un petit peu à la requête. Merci pour ça! – RailsSon