首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql连接虚拟表

mysql连接虚拟表
EN

Stack Overflow用户
提问于 2013-01-22 20:03:44
回答 1查看 2.9K关注 0票数 0

好的,我有一个收视率表。为离开评等的每个用户创建一个新行。我要做的是创建一个查询,该查询将返回当前和7天前存在的每个特定行的评级值。

广义的观点是,我想计算总的平均评分与7天前的总平均评分的差额。

我有这条路,我认为这是正确的道路,但我正在得到

代码语言:javascript
复制
Unknown column 'start_ratings.menu_item_id' in 'on clause'

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-22 20:05:38

您对列as end_menu_item_id进行了别名化。只需使用它,因为在派生表的()之外,ON子句、SELECT列表等中只知道别名.

正因如此:

代码语言:javascript
复制
SELECT menu_item_id as end_menu_item_id, 
/*-----------------^^^^^^^^^^^^^^^^^^^^^^ */

用这个:

代码语言:javascript
复制
...) start_ratings ON (end_ratings.menu_item_id = start_ratings.end_menu_item_id)
/*----------------------------------------------------------^^^^^^^^^^^^^^^^^^^^^^^ */
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14467050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档