2012-09-04 236 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