2012-09-04 203 views
0
SELECT *, 
      (select SUM(sl.priceeach*sl.qty) as 'tot' 
        from salesline sl where sl.soid=so.soid) as 'total', 
      so.total, 
      so.discount, 
      so.tax 
    from salesorder so 

我试图找出此查询,但在另一个coloumn 我不能显示总显示含税和折扣minused数据SQL嵌套查询计算

ERROR : #1054 - Unknown column 'so.total' in 'field list' 

什么毛病我查询?

+2

为什么使用*与其他表列? – Jivan

+0

saleslorder表有一个名为total的列吗? – Zeph

+0

看起来SALESORDER表中没有名为TOTAL的列。 请再次检查 – djadmin

回答

1

首先,您不希望为此使用相关的子查询。事实上,你应该永远不要使用它们,因为它们像游标一样处理逐行的行。

CTE或派生表将完成这项工作。

SELECT a.total, 
     so.discount, 
     so.tax 
FROM salesorder so 
JOIN 
    (SELECT sl.soid,SUM(sl.priceeach*sl.qty) AS 'total' 
    FROM salesline sl GROUP BY sl.soid) A 
    ON A.soid = so.soid 

现在是总在查询其他计算,如使用可用的列:

SELECT a.total, 
     so.discount, 
     so.tax, 
     so.tax*a.total as TaxableAmount 
FROM salesorder so 
JOIN 
    (SELECT sl.soid,SUM(sl.priceeach*sl.qty) AS 'total' 
    FROM salesline sl GROUP BY sl.soid) A 
    ON A.soid = so.soid