Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql HY000视图的SELECT在FROM子句中包含子查询_Sql_View - Fatal编程技术网

Sql HY000视图的SELECT在FROM子句中包含子查询

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

我有一个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.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子句中的子查询。它在文档中:。为此,可以为内部子查询创建一个视图,然后为外部查询创建另一个视图。