Не выходит создать правильный запрос sql
Имеется две таблицы: первая ips, вторая dates. В первой два столбца:
ipId (int,PK) и ip (varchar(16)) . Во второй три столбца, dateID (int, PK), ipId (int, FK) и date (datetime). Во второй таблице в n разных строках может быть один и тот же айпи, но время разное. Необходимо найти самое раннее время у каждого айпи и вывести это. Я попытался сделать это так:
SELECT DISTINCT ip, DATE
FROM ips
INNER JOIN dates ON ips.ipID = dates.ipID
AND DATE = (
SELECT MIN(d2.DATE)
FROM dates d2
WHERE d2.idIP = ips.idIP
)
В одной таблице без ссылок я делал это по такой логике, но здесь так не работает. Еще экспериментировал с разными условиями и добавлением новых во внутреннем запросе, но тоже ничего не вышло и порой запрос вообще не выполнялся(очень долго грузился). Прошу помочь, заранее спасибо.
Ответы (1 шт):
Если не ошибаюсь, то тебе тут нужно использовать группировку и агрегатную операцию. Точно не уверен в верности синтаксиса, но что-то вроде:
SELECT ip, MIN(date) FROM ips INNER JOIN dates ON ips.ipID = dates.ipID
GROUP BY(ip)
Полагаю, это должно помочь