使用相关子查询时出现问题,内部查询无法找到列

时间:2011-04-05 16:00:46

标签: sql sqlite subquery

我一直在遇到SQL问题,我正在使用SQLite数据库,遗憾的是没有让以下工作。感谢所有帮助。

我希望以下查询对适合条件的transactionTable的amount列中的所有整数求和。其中一个条件在外部查询中从行更改为行,因此我希望内部查询对外部查询中的每一行运行一次。

运行此查询时出现以下错误:“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

谢谢!

1 个答案:

答案 0 :(得分: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