Sql HY000视图的SELECT在FROM子句中包含子查询
我有一个sql请求,它在phpmyadmin中工作,但当我尝试进行Viev时,我得到错误: HY000视图的SELECT在FROM子句中包含子查询 如何避免在FROM子句中使用子查询?以下是sql:Sql HY000视图的SELECT在FROM子句中包含子查询,sql,view,Sql,View,我有一个sql请求,它在phpmyadmin中工作,但当我尝试进行Viev时,我得到错误: HY000视图的SELECT在FROM子句中包含子查询 如何避免在FROM子句中使用子查询?以下是sql: Select tlb_all.BarCode As BarCode, Sum(tlb_all.TotalIncomes) As TotalIncomes, Sum(tlb_all.TotalOutcomes) As TotalOutcomes, Sum(tlb_all.TotalAdju
Select tlb_all.BarCode As BarCode,
Sum(tlb_all.TotalIncomes) As TotalIncomes,
Sum(tlb_all.TotalOutcomes) As TotalOutcomes,
Sum(tlb_all.TotalAdjustments) As TotalAdjustments,
Sum(tlb_all.TotalIncomes - tlb_all.TotalOutcomes + tlb_all.TotalAdjustments)
As Leftover
From (Select tlb1.BarCode As BarCode, Sum(IfNull(tlb1.Quantity,
0)) As TotalIncomes, Sum(0) As TotalOutcomes, Sum(0) As TotalAdjustments
From stock_incomes tlb1
Group By tlb1.BarCode
UNION
Select tlb2.BarCode As BarCode, Sum(0) As TotalIncomes,
Sum(IfNull(tlb2.Quantity, 0)) As TotalOutcomes, Sum(0) As
TotalAdjustments
From stock_outcomes tlb2
Group By tlb2.BarCode
UNION
Select tlb3.BarCode As BarCode, Sum(0) As TotalIncomes,
Sum(0) As TotalOutcomes, Sum(IfNull(tlb3.Adjustment,
0)) As TotalAdjustments
From stock_adjustments tlb3
Group By tlb3.BarCode
UNION
Select tlb4.BarCode As BarCode, Sum(0) As TotalIncomes,
Sum(0) As TotalOutcomes, Sum(0) As TotalAdjustments
From stock_outcomes tlb4
Group By tlb4.BarCode) As tlb_all
Group By tlb_all.BarCode
Having IsNull(tlb_all.BarCode) = FALSE And Leftover <> 0
Order By tlb_all.BarCode
如果您有一个包含所有可能代码的表,则可以执行如下操作:
select bc.BarCode,
(Select Sum(si.Quantity) From stock_incomes si where si.BarCode = bc.BarCode
) as TotalIncomes,
. . .
from BarCodes bc
也就是说,将子查询移动到允许这些查询的select子句。似乎可以使用with rollup或group by grouping集合来完成。语法取决于RDBMS。我猜这是mysql,但你能确认吗?是的。MySQL不支持from子句中的子查询。它在文档中:。为此,可以为内部子查询创建一个视图,然后为外部查询创建另一个视图。