MadMyche
Без вашей схемы БД довольно трудно ответить на этот вопрос, так как мы можем только предполагать, какие данные у вас есть.
Вы ссылались на таблицу Карренталь в запросе. Я предполагаю, что это отдельные оговорки для конкретного автомобиля, идентифицированные колонкой Карид Если бы это была моя (нормализованная) БД, у меня также была бы таблица для Машина с ПК CarID, как указано в таблице аренды.
Если все это правда, то запрос, который вы представили, предоставит вам подробную информацию о бронировании, а не столько о самих автомобилях. Даже если это то, что вы хотели, вы не получите 5 самых популярных, так как ваша агрегация находится только на CarID (по сути, ничего не делая) и сортировка по CarID. Тогда вполне разумно предположить, что подзапрос всегда будет отвечать последними 5 CarIDs в порядке убывания
Однако то, что вы хотели бы сделать, - это сохранить агрегат на основе CarID; вы хотите сделать заказ на количество этих Carid, убывая
SELECT *
FROM CarRental
WHERE CarID IN (
SELECT TOP (5) CarID
FROM CarRental
GROUP BY CarID
ORDER BY Count(CarID) DESC
)
Если я был прав в своей схеме БД, то у вас есть таблица Car; и вместо этого вы хотели получить сведения о машине - запрос легко редактировать, чтобы основной запрос ссылался на эту таблицу и сохранял подзапрос как есть:
SELECT *
FROM Car
WHERE CarID IN (
SELECT TOP (5) CarID
FROM CarRental
GROUP BY CarID
ORDER BY Count(CarID) DESC
)
MadMyche
Это одна из тех важных вещей, которые нужно сделать в первоначальном вопросе; сообщить нам, что у вас есть, и четко указать, что вы хотите - все арендованные автомобили или только список автомобилей; и, возможно, сколько раз каждый из них был арендован
Ron23111
Спасибо, что это сработало для меня, и если я хочу показать 5 наименее арендованных грузовиков, чем