проблема с коррелированным подзапросом, внутренний запрос не может найти столбец - PullRequest
2 голосов
/ 05 апреля 2011

У меня были проблемы с SQL, я использую базу данных SQLite и, к сожалению, не могу заставить работать следующее.Приветствуется вся помощь.

Я хочу, чтобы следующий запрос суммировал все целые числа в столбце суммы в транзакции таблицы, соответствующей критериям.Один из критериев изменяется от строки к строке во внешнем запросе, поэтому я хочу, чтобы внутренний запрос выполнялся один раз для каждой строки во внешнем запросе.

я получаю следующую ошибку при выполнении этого запроса: «нет такого столбца: 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 Ответ

5 голосов
/ 05 апреля 2011

Я думаю, что это можно сделать без подзапроса.Попробуйте эту версию.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...