2010-12-15 2 views
1

У меня есть две таблицы - tool_downloads и tool_configurations. Я пытаюсь получить самую последнюю дату сборки для каждого инструмента в моей базе данных. Макет БД прост. Одна таблица, называемая tool_downloads, отслеживает загрузку инструмента. Другая таблица называется tool_configurations и хранит фактические данные об инструменте. Они связаны вместе с tool_conf_id.с использованием агрегатных функций SQL с JOINs

Если я запустил следующий запрос, который пропускает даты, я возвращаю 200 записей.

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 

Когда я пытаюсь добавить информацию о дате, я получаю сотни тысяч записей! Вот запрос, который терпит неудачу.

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

Я знаю, что проблема имеет какое-то отношение к групповым/совокупным данным и объединениям. Я не могу действительно искать google, так как не знаю названия проблемы, с которой я сталкиваюсь. Любая помощь будет оценена по достоинству.

ответ

3

Решение:

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 
Смежные вопросы