2010-12-15 94 views
1

J'ai deux tables - tool_downloads et tool_configurations. J'essaye de récupérer la date de construction la plus récente pour chaque outil dans ma base de données. La disposition de la base de données est simple. Une table appelée tool_downloads garde la trace du moment où un outil est téléchargé. Une autre table s'appelle tool_configurations et stocke les données réelles sur l'outil. Ils sont liés par le tool_conf_id.utilisant des fonctions d'agrégat SQL avec JOINs

Si j'exécute la requête suivante qui omet les dates, je récupère 200 enregistrements.

SELECT DISTINCT a.tool_conf_id, b.tool_conf_id 
FROM tool_downloads a 
JOIN tool_configurations b 
ON a.tool_conf_id = b.tool_conf_id 
ORDER BY a.tool_conf_id 

Lorsque j'essaie d'ajouter des informations de date, je récupère des centaines de milliers d'enregistrements! Voici la requête qui échoue horriblement. Je sais que le problème a quelque chose à voir avec les groupements/agrégats de données et les jointures. Je ne peux pas vraiment chercher google puisque je ne connais pas le nom du problème que je rencontre. Toute aide serait appréciée.

Répondre

3

Solution est:

SELECT b.tool_conf_id, b.configuration_name, max(a.configured_date) as config_date 
    FROM tool_downloads a 
    JOIN tool_configurations b 
     ON a.tool_conf_id = b.tool_conf_id 
    GROUP BY b.tool_conf_id, b.configuration_name