通过三层标量子查询传递数据
Posted
技术标签:
【中文标题】通过三层标量子查询传递数据【英文标题】:Passing Data Through A Three Tiered Scalar Subquery 【发布时间】:2012-04-09 13:45:30 【问题描述】:我有一个查询,它分为三层。也就是说,我有一个主查询,里面有一个标量子查询,里面也有一个标量子查询。
底层标量查询返回两个不同的值,中层子查询返回两个的平均值。但是,底层查询不是接收当前值,而是对表中的所有值进行平均。
有谁知道如何正确地将当前***查询结果的值传递给底部子查询?
代码示例:
Select Product,
Description,
(Select Avg(Mfg_Cost, Purchasing_Cost)
FROM (Select Mfg_Cost,
Purchasing Cost
From Cost
Where Cost.Product = Products.Product))
From Products;
【问题讨论】:
【参考方案1】:你不能像这样使用 JOIN 和 GROUP BY:
Select p.Product,
p.Description,
Avg(c.Mfg_Cost),
Avg(c.Purchasing_Cost)
From Products p
INNER JOIN
Cost c
ON c.Product = p.Product
GROUP BY p.Product, p.Description;
一般来说,如果您需要从子查询中返回多个值:
Select p.Product,
p.Description,
q2.AvgMfg_Cost,
q2.AvgPurchasing_Cost
From Products p INNER JOIN
(
Select c.Product,
Avg(c.Mfg_Cost) AS AvgMfg_Cost,
Avg(c.Purchasing_Cost) AS AvgPurchasing_Cost
From Cost c
Group by c.Product
) AS q2
on q2.Product = p.Product;
在 Microsoft SQL Server 中,您还可以使用 Common Table Expression (CTE)
【讨论】:
谢谢nonnb,不幸的是我的情况比我最初领导的要复杂得多。从那以后,我又挖了一些,发现了我的问题。我无法将顶部查询中的值传递给底部子查询。我把它修好了,世界又好了!谢谢!以上是关于通过三层标量子查询传递数据的主要内容,如果未能解决你的问题,请参考以下文章
通过 JSON 将 Django 数据库查询集传递给 Highcharts