【问题标题】:trouble with a correlated subquery, inner query cannot find column相关子查询出现问题,内部查询找不到列
【发布时间】:2011-04-05 16:00:46
【问题描述】:

我遇到了 SQL 问题,我正在使用 SQLite 数据库,遗憾的是无法使以下内容正常工作。感谢所有帮助。

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

运行此查询时出现以下错误:“没有这样的列:ct.name” 我在下面的查询中将我认为错误的行加粗。

表 1:分类表

columns: id, icon, name, starred

表 2:事务表

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

谢谢!

【问题讨论】:

    标签: sql sqlite subquery


    【解决方案1】:

    我认为这可以在没有子查询的情况下完成。试试这个版本。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多