sql - 相关子查询出现问题,内部查询找不到列

标签 sql sqlite subquery

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

我希望以下查询对 transactionTable 的 amount 列中符合条件的所有整数求和。外部查询中的条件之一随行而变化,因此我希望内部查询为外部查询中的每一行运行一次。

运行此查询时出现以下错误:“没有这样的列: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

谢谢!

最佳答案

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

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

关于sql - 相关子查询出现问题,内部查询找不到列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5554825/

相关文章:

sql - 通过自左连接传递聚合函数列

c# - 一对一关系不起作用

performance - Sqlite 子查询 : in one big query or in a for loop?

sql-server - 将包含子查询的 T-SQL 查询重写为使用连接

sql - vb.net中使用oledb获取sql server print语句的值

mysql - 使用 Google Apps 脚本将空值从表格插入 Mysql 数据库

sql - 使用许多更新语句重构 PostgreSQL WITH 查询

multithreading - 在不同平台上使用 sqlite 和文件锁定是否存在已知问题?

javascript - JQuery 等待多个延迟解析

mysql - 如何使 "distinct"加入 MySQL