J'ai deux tables, avec un contenant des enregistrements référençant l'autre:Est-il possible de condenser ces requêtes en une seule?
Goal
id (int)
name (text)
value_mask (text)
GoalStatus
id (int)
goal (int)
created (datetime)
value (text)
Goal.id == GoalStatus.goal
Ce que je voudrais faire, est de tirer le dernier enregistrement de la table GoalStatus, pour chaque enregistrement dans le but. En ce moment, la seule façon que je sais comment faire cela est en faisant une requête distincte pour chaque enregistrement dans l'objectif (pseudocode):
goals = db.query("SELECT * FROM Goal")
foreach (goals as goal):
goalStatus = db.query("
SELECT * FROM GoalStatus
WHERE goal = " + goal.id + "
ORDER BY created DESC
LIMIT 1
")
Est-il possible de condenser cela, donc je ne fais pas un supplément requête pour chaque objectif?
Je pense que ce que vous voulez est comme: http://stackoverflow.com/questions/1537606/mysql-group-by-with-top-n-number-of-each-kind –
et un autre lien aide: allez mysql part http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/ –