好的,所以我有一个评分表。为每个留下评分的用户创建一个新行。我要做的是创建一个查询,该查询将返回现在和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;

最佳答案

您已为列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)
/*----------------------------------------------------------^^^^^^^^^^^^^^^^^^^^^^^ */

关于mysql - mysql加入虚拟表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14467050/

10-15 10:49