首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mySQL相关子查询

问mySQL相关子查询
EN

Stack Overflow用户
提问于 2013-01-05 03:18:38
回答 6查看 3.5K关注 0票数 3

尝试编写一个mysql查询,并对此有很多困难。

我有两个表( Item: items about items和itemReview: reviews for the items)

我想要做的是选择属于特定位置的所有项目(这就是我的外部查询所做的工作),然后对于外部查询中的每个项目,获取itemReview表中所有评级字段的平均值

这是我的尝试:

代码语言:javascript
复制
SELECT 
    Item.idDish, 
    Item.dateAdded, 
    Item.dateModified, 
    Item.fidLocation, 
    Item.category, 
    Item.description, 
    Item.price, 
    Item.name, 
    Item.fullImageName, 
    Item.thumbnailImageName, 
    sub.rating
FROM Item 
JOIN (
        SELECT 
            AVG(ItemReview.rating) AS rating 
        FROM ItemReview 
        WHERE ItemReview.fidItem = Item.idItem
    ) AS sub
WHERE Item.fidLocation = '63';

但是mySQL说:where子句中的未知列'Item.idItem‘

任何帮助都将不胜感激!谢谢!!

EN

回答 6

Stack Overflow用户

发布于 2013-01-05 03:21:27

您正在尝试访问子查询中的Item.idItem,但它在那里不可用。你应该使用类似这样的东西:

代码语言:javascript
复制
SELECT 
    Item.idDish, 
    Item.dateAdded, 
    Item.dateModified, 
    Item.fidLocation, 
    Item.category, 
    Item.description, 
    Item.price, 
    Item.name, 
    Item.fullImageName, 
    Item.thumbnailImageName, 
    sub.rating
FROM Item 
JOIN 
(
    SELECT fidItem, AVG(ItemReview.rating) AS rating 
    FROM ItemReview 
    GROUP BY ItemReview.fidItem
) AS sub
   ON sub.fidItem = Item.idItem
WHERE Item.fidLocation = '63';
票数 7
EN

Stack Overflow用户

发布于 2013-01-05 03:21:40

查询:

代码语言:javascript
复制
SELECT 
    Item.idDish, 
    Item.dateAdded, 
    Item.dateModified, 
    Item.fidLocation, 
    Item.category, 
    Item.description, 
    Item.price, 
    Item.name, 
    Item.fullImageName, 
    Item.thumbnailImageName, 
    (   SELECT 
            AVG(ItemReview.rating) AS rating 
        FROM ItemReview 
        WHERE ItemReview.fidItem = Item.idItem
    ) AS rating
FROM Item 
WHERE Item.fidLocation = '63'
票数 4
EN

Stack Overflow用户

发布于 2013-01-05 03:22:03

试试这个:

代码语言:javascript
复制
SELECT i.idDish, i.dateAdded, i.dateModified, i.fidLocation, i.category, 
       i.description, i.price, i.name, i.fullImageName, 
       i.thumbnailImageName, ir.rating 
FROM Item i 
LEFT JOIN (SELECT fiditem, AVG(ItemReview.rating) AS rating 
           FROM ItemReview
           GROUP BY fiditem) ir ON ir.fidItem = i.idItem 
WHERE i.fidLocation = '63';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14163462

复制
相关文章

相似问题

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