数据库
首页 > 数据库> > mySQL与Subquery相关

mySQL与Subquery相关

作者:互联网

试图写一个mysql查询,并在这个问题上遇到很多困难.

我有两个表(项目:关于项目的信息,以及itemReview:项目的评论)

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

这是我的尝试:

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’

任何帮助将非常感谢!!谢谢!!

解决方法:

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

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';

标签:mysql,join,subquery,correlated-subquery
来源: https://codeday.me/bug/20190716/1479700.html