返回无效结果的SQL查询
对SQL有点陌生,所以我希望您能给我一些提示,告诉我这个SQL语句哪里出了问题 我有两张桌子,一张叫返回无效结果的SQL查询,sql,sqlite,join,average,Sql,Sqlite,Join,Average,对SQL有点陌生,所以我希望您能给我一些提示,告诉我这个SQL语句哪里出了问题 我有两张桌子,一张叫Hotel,一张叫Review。它们通过HotelID链接。我试图返回HotelID与总体评分大于或等于3(酒店表中的属性)和平均清洁度(查看属性)大于或等于5相关联的HotelIDs 我知道有一个事实,没有满足这两个要求的HotelID,但是这个语句返回了很多结果 SELECT Hotel.HotelID FROM Hotel INNER JOIN Review ON
Hotel
,一张叫Review
。它们通过HotelID
链接。我试图返回HotelID
与总体评分
大于或等于3(酒店表中的属性)和平均清洁度
(查看属性)大于或等于5相关联的HotelID
s
我知道有一个事实,没有满足这两个要求的HotelID
,但是这个语句返回了很多结果
SELECT
Hotel.HotelID
FROM
Hotel
INNER JOIN Review ON Hotel.HotelID = Review.ReviewID
GROUP BY
Hotel.HotelID
HAVING
( Hotel.OverallRating >= 3 )
AND
( AVG( NULLIF( Review.Cleanliness, -1 ) ) >= 5);
NULLIF
用于排除-1的值(表示没有剩余评级)
谢谢大家嗯。加入酒店之前,总结一下评论。然后,您还应按正确的键加入:
SELECT h.HotelID
FROM Hotel h JOIN
(SELECT r.HotelId, AVG(r.Cleanliness) as avg_cleanliness
FROM Review r
GROUP BY r.HotelId
) r
ON h.HotelId = r.HotelId
WHERE h.OverallRating >= 3 AND r.avg_cleanliness >= 5;
嗯。加入酒店之前,总结一下评论。然后,您还应按正确的键加入:
SELECT h.HotelID
FROM Hotel h JOIN
(SELECT r.HotelId, AVG(r.Cleanliness) as avg_cleanliness
FROM Review r
GROUP BY r.HotelId
) r
ON h.HotelId = r.HotelId
WHERE h.OverallRating >= 3 AND r.avg_cleanliness >= 5;
我认为问题在于你的内部连接
语句。将两个表连接在一起时,您希望在它们之间相关的数据上连接它们。您当前正在加入Hotel.HotelID=Review.ReviewID
。我猜这些都是各自表的主键,ReviewID并没有指出酒店的记录
尝试将您的加入更改为Hotel.HotelID=Review.HotelID
我认为问题在于您的内部加入声明。将两个表连接在一起时,您希望在它们之间相关的数据上连接它们。您当前正在加入Hotel.HotelID=Review.ReviewID
。我猜这些都是各自表的主键,ReviewID并没有指出酒店的记录
尝试将您的加入更改为Hotel.HotelID=Review.HotelID您的内部加入错误
INNER JOIN Review ON Hotel.HotelID = Review.ReviewID
应该是
INNER JOIN Review ON Hotel.HotelID = Review.HotelID
在连接中使用HotelId not ReviewId您的内部连接错误
INNER JOIN Review ON Hotel.HotelID = Review.ReviewID
应该是
INNER JOIN Review ON Hotel.HotelID = Review.HotelID
在join中使用HotelId not ReviewId我也是sql新手,但是您是否尝试过使用WHERE语句 选择HotelID酒店 从酒店 Hotel.HotelID=Review.HotelID上的内部加入评论
式中(酒店总体污染等级>=3)和(平均无污染等级-1))>=5 我也是sql新手,但您是否尝试过使用WHERE语句 选择HotelID酒店 从酒店 Hotel.HotelID=Review.HotelID上的内部加入评论
式中(酒店总体污染等级>=3)和(平均无污染等级-1))>=5 评论中是否存在打字错误或酒店ID。评论ID
INNER JOIN Review ON Hotel.HotelID = Review.HotelID
评论中是否有打字错误或酒店ID。评论ID
INNER JOIN Review ON Hotel.HotelID = Review.HotelID
我是个白痴,天哪。我昨晚修好了,一定没有保存它。谢谢我是个白痴,天哪。我昨晚修好了,一定没有保存它。谢谢你好欢迎来到StackOverflow!你的问题很广泛。请读一读。谢谢你好欢迎来到StackOverflow!你的问题很广泛。请读一读。谢谢