ms access—如何根据另一个表中的平均值对sql表进行排序

sulc1iza  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(282)

表关系和字段的图像
我很难根据另一个表中的平均值对查询进行排序。我有一个带有hotelid、hotelname、pricepernight、leftcoordinate和topcordinate的tblhotels表,还有一个带有hotelid和hotelrating的tblratings表(从不同用户/多个评级中从1到10排列)。
我想我的查询显示所有酒店的价格(从tblhotels)是在一个给定的范围内(在lowervalue和uppervalue之间)显示,然后按他们的评级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不是聚合函数的一部分”
我在网上寻找解决方案,但没有成功:(

6uxekuva

6uxekuva1#

基本上你需要更多的东西来分组。。。

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

相关问题