MySQL嵌套查询
我有两张桌子,一张包含产品,一张包含采购。我试图找出每种产品最近三次购买价格的平均值。因此,在下面的示例中,对于产品“beans”,我希望返回产品时间1230854663之前最后3个购买价格的平均值,即客户C、D、e 239的平均值 产品 购买 我提出了一个嵌套的select查询,它几乎可以让我到达那里,也就是说,如果我硬编码时间,它就会工作: 选择products.name,从SelectPurchases.price FROM purchases中选择avgtemp.price,其中purchases.time<1230854764 order by purchases.time desc limit 3 temp作为av_price 从产品 但是,如果查询引用product.time而不是下面这样的硬编码时间,我会得到一个错误,即products.time列不存在 选择products.name,从SELECT purchases.price FROM purchases中选择avgtemp.price,其中purchases.timeMySQL嵌套查询,mysql,select,Mysql,Select,我有两张桌子,一张包含产品,一张包含采购。我试图找出每种产品最近三次购买价格的平均值。因此,在下面的示例中,对于产品“beans”,我希望返回产品时间1230854663之前最后3个购买价格的平均值,即客户C、D、e 239的平均值 产品 购买 我提出了一个嵌套的select查询,它几乎可以让我到达那里,也就是说,如果我硬编码时间,它就会工作: 选择products.name,从SelectPurchases.price FROM purchases中选择avgtemp.price,其中purc
我不确定我是否在嵌套查询中犯了一个简单的错误,或者我是以完全错误的方式进行的,应该使用连接或其他构造,无论哪种方式,我都被卡住了。任何帮助都会收到。查询中唯一的问题是您在内部查询中没有提到products表
SELECT products.name,(SELECT avg(temp.price)
FROM (select purchases.price from purchases,products
WHERE purchases.time < products.time order by purchases.time desc limit 3) temp) as
av_price from products products
您是指产品时间1230854764之前最近3次购买价格的平均值吗?不,那也没有道理。我被你的时间值搞糊涂了,它们对吗?你的表结构没有标准化。采购没有任何产品数据。产品中是否只有一个记录?如果它们是多个记录,它们与购买有何关系?请提供两个表的结构。
+----------+------------+-------+
| Customer | time | price |
+----------+------------+-------+
| B | 1230854661 | 207 |
| C | 1230854662 | 444 |
| D | 1230854663 | 66 |
| E | 1230854764 | 88 |
| A | 1230854660 | 155 |
+----------+------------+-------+
SELECT products.name,(SELECT avg(temp.price)
FROM (select purchases.price from purchases,products
WHERE purchases.time < products.time order by purchases.time desc limit 3) temp) as
av_price from products products