Как отсортировать таблицу SQL по среднему значению в другой таблице - PullRequest
0 голосов
/ 09 июля 2020

Изображение отношений и полей таблиц

Мне очень трудно создать запрос, в котором я хочу отсортировать свой запрос в соответствии со средним значением в другой таблице. У меня есть таблица tblHotels с HotelID, HotelName, PricePerNight, LeftCoordinate и TopCoordinate, а также таблица tblRatings с HotelID и HotelRating (от 1 до 10 от разных пользователей / несколько оценок).

Я хочу, чтобы мой запрос отображался все отели, в которых PricePerNight (из tblHotels) находится в заданном диапазоне (МЕЖДУ нижним значением И верхним значением), чтобы отобразить, а затем отсортировать его по их рейтингам в tblRatings.

SELECT tblRatings.HotelID
    , tblHotels.HotelName
    , LeftCoordinate
    , TopCoordinate
    , AVG(HotelRating) AS Rating 
FROM tblRatings, tblHotels 
WHERE ( SELECT HotelID 
        FROM tblHotels 
        WHERE PricePerNight BETWEEN LowerValue AND UpperValue) = 
        tblRatings.HotelID 
GROUP BY tblRatings.HotelID 
ORDER BY AVG(HotelRating) DESC

SELECT tblRatings.HotelID
    , HotelName
    , LeftCoordinate
    , TopCoordinate
    , AVG(HotelRating) AS Rating 
FROM tblHotels, tblRatings 
WHERE (PricePerNight BETWEEN LowerValue AND UpperValue) AND (tblHotels.HotelID = tblRatings.HotelID) 
GROUP BY tblRatings.HotelID 
ORDER BY AVG(HotelRating) DESC

Я пробовал подзапрос и связанный запрос таблицы, но оба дают мне ошибку «HotelName не является частью агрегатной функции»

Я искал в Интернете, чтобы попытаться найти решение, но безуспешно: (

1 Ответ

0 голосов
/ 09 июля 2020

в основном вам нужно сгруппировать по большему количеству вещей ...

SELECT tblRatings.HotelID
    , HotelName
    , LeftCoordinate
    , TopCoordinate
    , AVG(HotelRating) AS Rating 
FROM tblHotels, tblRatings 
WHERE (PricePerNight BETWEEN LowerValue AND UpperValue) AND (tblHotels.HotelID = tblRatings.HotelID) 
GROUP BY tblRatings.HotelID, HotelName, LeftCoordinate, TopCoordinate
ORDER BY AVG(HotelRating) DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...