2009-01-27 7 views
1

J'ai les 2 tableaux suivants:SQL dernier enregistrement par foreign_key

  • ingrédients (id, nom)
  • ingredient_prices (id, ingredient_id, prix, created_at)

tels que Un ingrédient peut avoir beaucoup de prix. Quelle sera la meilleure façon d'obtenir le dernier prix entré par ingrédient? Je sais que cela peut se faire facilement avec des sous-sélections, mais je veux savoir s'il existe un moyen plus efficace de le faire.

Répondre

4

je le fais de cette façon:

SELECT i.*, p1.* 
FROM ingredients i 
JOIN ingredient_prices p1 ON (i.id = p1.ingredient_id) 
LEFT OUTER JOIN ingredient_prices p2 ON (i.id = p2.ingredient_id 
    AND p1.created_at < p2.created_at) 
WHERE p2.id IS NULL; 

Cette recherche un prix (p2) qui est plus récente que p1, et si aucune est trouvée, p1 doit être le prix le plus récent.

S'il y a une possibilité de plus d'un prix à une date donnée, alors vous avez besoin d'un autre terme pour filtrer le doublon.

Questions connexes