Итак, очень простой запрос, но я не уверен, правильно ли я прав, так как я делаю это на бумаге и не имею базы данных, где я могу попробовать. на. Это упражнение для экзамена в колледже. У меня есть эта таблица:Выберите запись с MIN (DATE)
Serv_req
=============
PK Svr_ID
State
Req_Date
Description
Они просто просят меня, чтобы показать данные для старейшей Serv_Req, который имеет «Open» в качестве государства.
То, что я написал до сих пор:
SELECT Svr_ID, State, Description, MIN(Req_Date)
FROM Serv_req
WHERE State LIKE 'Open'
GROUP BY Svr_ID, State, Description
Теперь это будет возвращать только запись с информацией для старейшей Svr_req? или он вернет список ВСЕХ требований «Open» с датой самой старой в конце?
UPDATE
я забыл упомянуть. К сожалению, правила курса не позволяют нам использовать SELECT TOP
, LIMIT 1
или даже подзапросы для создания таблиц AUX в инструкции FROM
.
Заранее благодарю вас за помощь!
UPDATE 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'
)
Я знаю, что это не самый ясный/самый исполнительский способ сделать этот запрос, но с ограничением мой курс навязывает, это лучшее, что я мог придумать , Ребята, что вы думаете? Кажется ли это правильным?
Вы уверены, что вам нужно показать, на каком сервере это состояние, и его описание? – gangreen
@gangreen Ну, да, это то, что говорится в книге :). Это может быть немного запутанным, но на самом деле это не серверы, а «Требования к сервису». Так что он спрашивает меня, это показать самое старое требование к сервису, состояние которого «открыто» – nachoargentina
Причина, по которой я спрашивал, состоит в том, что вопрос, как поставлено, не является детерминированным. Что произойдет, если 2 Open Service Requirements упадут на ту же самую точную дату? – gangreen