Итак, очень простой запрос, но я не уверен, правильно ли я его понял, так как я делаю это на бумаге и у меня нет СУБД, где я могу его примерить.
Это упражнение для экзамена в колледже.
У меня есть эта таблица:
Serv_req
=============
PK Svr_ID
State
Req_Date
Description
Они просто просят меня показать данные для самого старого Serv_Req, который имеет состояние "Открыть" в качестве состояния.
То, что я написал до сих пор:
SELECT Svr_ID, State, Description, MIN(Req_Date)
FROM Serv_req
WHERE State LIKE 'Open'
GROUP BY Svr_ID, State, Description
Теперь, это вернет ТОЛЬКО запись с информацией для самого старого Svr_req? или он вернет список ВСЕХ «открытых» требований с указанием даты самого старого в конце?
UPDATE
Я забыл упомянуть. К сожалению, правила курса не позволяют нам использовать SELECT TOP
, LIMIT 1
или даже подзапросы для создания вспомогательных таблиц в операторе FROM
.
Заранее спасибо за помощь, ребята!
ОБНОВЛЕНИЕ 2
Итак, увидев первый запрос, который я написал, совершенно неправильно, я даю ему вторую попытку.
Пожалуйста, скажите мне, если вы считаете, что это правильно:
SELECT Svr_id, State, Description
FROM Serv_req
WHERE State LIKE 'Open'
AND Req_Date = (SELECT MIN(S1.Req_date)
FROM Serv_req S1
WHERE S1.State LIKE 'Open'
)
Я знаю, что это не самый ясный / самый эффективный способ выполнить этот запрос, но с учетом ограничений, налагаемых моим курсом, это лучшее, что я мог придумать. Что, вы парни, думаете? Это кажется правильным?