sqlite, python, apsw: проблема с параметризацией вложенного выбора
Я пытаюсь запросить некоторые данные базы данных sqlite с вложенным оператором выбора. Окончательный результат запроса должен быть ограничен предложением WHERE, поэтому я заключил в скобки «внутренний» оператор выбора, назвал его s1 и поместил вокруг него другой оператор выбора.
При использовании параметра в последнем WHERE в коде (предпоследняя строка в sql) я получаю пустой результат, как будто в таблице нет данных. Без параметра, просто предоставляя вместо этого строку «2018-12-31», он работает нормально, и я получаю 4 кортежа данных (мой ожидаемый результат). Но параметр, который я использую в предложении WHERE (:jahresEnde), я использую и в других местах выбора. Это точно то же самое. Что я делаю не так?
Вот мой код:
sqlCommands = '''
SELECT Name, Einheit, Whg, von, bis FROM
(
SELECT B.Name, H.Einheit, H.ID as Whg, FkEinheit,
CASE WHEN julianday(B.Einzug) < julianday(:jahresAnfang)
THEN :jahresAnfang
ELSE B.Einzug
END von,
CASE WHEN julianday(B.Auszug) > julianday(:jahresEnde)
THEN :jahresEnde
WHEN B.Auszug == '' AND julianday(:jahresEnde) < julianday(DATE())
THEN :jahresEnde
WHEN B.Auszug == '' AND julianday(:jahresEnde) > julianday(DATE())
THEN DATE()
ELSE B.Auszug
END bis
FROM bewohner AS B INNER JOIN haus AS H
ON B.FkEinheit = H.ID
WHERE julianday(bis) IS NULL
OR julianday(bis) >= julianday(:jahresAnfang)
) s1
WHERE julianday(von) <= julianday(:jahresEnde)
ORDER BY FkEinheit DESC
'''
args={
":jahresAnfang":'2018-01-01',
":jahresEnde":'2018-12-31'
}
cursor = db.cursor()
ok = cursor.execute(sqlCommands,args)
print (list(ok))
Я также пробовал другой модуль sqlite раньше: PyQt6.QtSql. С этим модулем все работало нормально, но у меня возникла другая проблема в другом месте кода. Поэтому я хотел перейти на apsw.