2017-05-05 166 views
0

一位新手到SQL的位,所以我會很感激任何提示,我要去哪裏這個SQL語句錯了。SQL查詢返回無效結果

我有兩個表,一個名爲Hotel,另一個名爲Review。他們通過HotelID連接。我想這與3(在Hotel表中的屬性)大於或等於OverallRating,平均Cleanliness(一Review屬性)相關HotelID s的大於或等於恢復到5

我知道事實上有沒有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的值(表示沒有評級)。

謝謝全部

回答

2

我想這個問題是你INNER JOIN聲明。當您將兩個表連接在一起時,您想要將它們連接在相關的數據上。您目前正在加入Hotel.HotelID = Review.ReviewID。我的猜測是這些都是各自表格的主鍵,並且ReviewID並不指向酒店中的記錄。

嘗試將您的連接更改爲ON Hotel.HotelID = Review.HotelID

1

嗯。 。 。在加入酒店之前總結評論。然後,你也應加入正確的密鑰:

​​
2

你的內部連接是錯誤的。

INNER JOIN Review ON Hotel.HotelID = Review.ReviewID 

應該

INNER JOIN Review ON Hotel.HotelID = Review.HotelID 

使用HotelId不ReviewId聯接

+0

我是個白癡,好主。我昨天晚上修好了,一定沒有保存過。謝謝! – Nothe

-2

我是新來的SQL作爲好,但你嘗試使用WHERE語句?

SELECT Hotel.HotelID 來自飯店 INNER JOIN評分ON Hotel.HotelID = Review.HotelID WHERE(Hotel.OverallRating> = 3)和(AVG(NULLIF(Review.Cleanliness,-1))> = 5 );

+0

你好!歡迎來到StackOverflow!你的問題非常廣泛。請閱讀[「我怎麼問一個好問題?」](https://stackoverflow.com/help/how-to-ask)。謝謝! –

1

是否存在拼寫錯誤或是存儲在Review中的Hotel ID? 評論ID

INNER JOIN Review ON Hotel.HotelID = Review.HotelID