2011-04-05 23 views
2

我一直有SQL的麻煩,我正在使用SQLite數據庫,可悲的是不能得到以下工作。所有的幫助表示讚賞。與相關的子查詢的問題,內部查詢找不到列

我想要下面的查詢來總結符合標準的transactionTable的金額列中的所有整數。在外部查詢中,行之間的條件之一發生更改,所以我希望內部查詢爲外部查詢中的每一行運行一次。

運行此查詢時出現以下錯誤:「no such column:ct.name」 我在下面的查詢中加粗了我認爲不對的行。

表1:categoryTable

columns: id, icon, name, starred 

表2:transactionTable

columns: id, date, amount, sign, category 

查詢:

SELECT id, icon, name, starred, mySum 
    FROM categoryTable ct, 
     (SELECT sum(amount) AS mySum FROM transactionTable 
      WHERE date<'1992' AND date>'1990' 
      AND sign = '-' AND category=ct.name) AS sumTable 
    WHERE mySum!=0 
    ORDER BY mySum DESC 

謝謝!

回答

5

我認爲這可以在沒有子查詢的情況下完成。試試這個版本。

SELECT ct.id, ct.icon, ct.name, ct.starred, SUM(tt.amount) AS transactionSum 
    FROM categoryTable ct 
     INNER JOIN transactionTable tt 
      ON ct.name = tt.category 
       AND tt.date < '1992' 
       AND tt.date > '1990' 
       AND tt.sign = '-' 
    GROUP BY ct.id, ct.icon, ct.name, ct.starred 
    HAVING SUM(tt.amount) != 0 
    ORDER BY transactionSum DESC 
+0

將嘗試這是一點點,儘快回覆你:) thx – 2011-04-05 16:38:04

+0

似乎是完美的工作!謝謝 ! :) – 2011-04-05 17:00:27