ORDER

2012-03-17 12 views
2

私は、クエリを実行しようと、この例外を取得していますやあみんなORDER

それは、集計関数または GROUP BYのいずれかに含まれていないため、列restaurantData.restaurantIdが選択リスト では無効です句。

問合せ:

SELECT 
    T1.restaurantId AS ID, 
    COUNT(T2.post_id) AS favCount 
FROM 
    restaurantData AS T1 
INNER JOIN 
    favoriteData AS T2 ON T1.restaurantId = T2.post_id 
ORDER BY 
    favCount DESC, ID DESC 

それは私が、私はすでにrestaurantIDのためにしたORDER BY句、に集約されていないすべての選択列を追加する必要があることを述べています。しかし、それはまだ私にエラーを与える。

+2

エラーメッセージには、「ORDER BY」ではなく「GROUP BY」と表示されます。 –

答えて

4

クエリにGROUP BY T1.restaurantIdがありません。

SELECT T1.restaurantId AS ID, 
     COUNT(T2.post_id) AS favCount 
FROM restaurantData AS T1 
     INNER JOIN favoriteData AS T2 
     ON T1.restaurantId = T2.post_id 
GROUP BY T1.restaurantId 
ORDER BY favCount DESC, 
      ID DESC 

あなたはまったくGROUP BY句を持っていない、これはに分けるのではなく、あなたの全体のソーステーブルの集計を与えます(選択リスト内のどのケースrestaurantIdを含めることに総額でそれをラップすることなく、無効である)場合あなたがはっきりと望むようにレストランでグループを作りましょう。

4

あなたにもGROUP BY句を使用する必要がありますので、あなたは、集約関数(COUNT)を使用している:

SELECT 
    T1.restaurantId AS ID, 
    COUNT(T2.post_id) AS favCount 
FROM 
    restaurantData AS T1 
INNER JOIN 
    favoriteData AS T2 ON T1.restaurantId = T2.post_id 
GROUP BY 
    T1.restaurantID 
ORDER BY 
    favCount DESC, ID DESC 

基本的には、クエリで、あなたが見つかった行をカウントする - としたいです結果でグループ化されています。それぞれrestaurantId - これがGROUP BYの句の表現です。

関連する問題