0

わかりましたので、評価表があります。評価を残すユーザーごとに新しい行が作成されます。私がしようとしているのは、現在および 7 日前に存在する特定の各行の評価値を返すクエリを作成することです。

大局的には、合計平均評価と 7 日前の合計平均評価の差を計算したいということです。

私はこれを持っていますが、これは正しい道だと思いますが、私は得ています

Unknown column 'start_ratings.menu_item_id' in 'on clause'

SELECT *
FROM ratings end_ratings
JOIN (
SELECT menu_item_id as end_menu_item_id, AVG(value) AS end_rating
    FROM ratings
    WHERE  
        created_at > current_date - 7
        AND menu_item_id IS NOT NULL
        AND location_id IS NOT NULL
    GROUP BY menu_item_id
) start_ratings ON (end_ratings.menu_item_id = start_ratings.menu_item_id)
WHERE menu_item_id IS NOT NULL
AND location_id IS NOT NULL;
4

1 に答える 1

3

列に別名を付けましたas end_menu_item_id。エイリアスのみが句、リストなどの派生テーブルの外部で知られているため、代わりにそれを使用し()ONくださいSELECT...

このため:

SELECT menu_item_id as end_menu_item_id, 
/*-----------------^^^^^^^^^^^^^^^^^^^^^^ */

これを使って:

...) start_ratings ON (end_ratings.menu_item_id = start_ratings.end_menu_item_id)
/*----------------------------------------------------------^^^^^^^^^^^^^^^^^^^^^^^ */
于 2013-01-22T20:05:38.573 に答える