ID(整数)、N(整数)、V(実数)の3つの列を持つsqliteテーブルがあります。ペア(ID、N)は固有です。python sqlite3の再帰(カスケード)選択
Pythonモジュールsqlite3のを使用して、私は最大の再帰の深さを超過したためか、フォーム
select ID from TABLE where N = 0 and V between ? and ? and ID in
(select ID from TABLE where N = 7 and V between ? and ? and ID in
(select ID from TABLE where N = 8 and V between ? and ? and ID in
(...)
)
)
私は次のエラーを取得すると、再帰的な選択を実行したいと思います(?)。私はまた、
select ID from
(select ID from TABLE where N = 0 and V between ? and ?)
join (select ID from TABLE where N = 7 and V between ? and ?) using (ID)
join (select ID from TABLE where N = 8 and V between ? and ?) using (ID)
join ...
ようsubselectionsに参加しようとしたが、このアプローチはsupprisingly遅く、さらにいくつかのsubselectionsで
がより良い方法はあり
sqlite3.OperationalError: parser stack overflow
約20〜50 recusionレベルを必要とします同じ選択を実行するには?
注:表が上にインデックスされる(N、V)は、以下
はIDは、(0であり、選択は
ID N V
0 0 0,1
0 1 0,2
0 2 0,3
1 0 0,5
1 1 0,6
1 2 0,7
2 0 0,8
2 1 0,9
2 2 1,2
ステップ0
select ID from TABLE where N = 0 and V between 0 and 0,6
をどのように働くかを示すために一例であり、 1)
ステップ1
select ID from TABLE where N = 1 and V between 0 and 1 and ID in (0, 1)
IDは
ステップ2
select ID from TABLE where N = 2 and V between 0,5 and 1 and ID in (0, 1)
IDが1
すべてのステップで 'V'境界が同じですか? 'N'値はどこから来ますか?すべてのステップからIDを取得しますか? –
各ステップでV値が異なるわけではありません。この例では、Nの値は任意です。考え方は単に選択ステップをステップごとに細かく調整することです。 – user2660966
一般的にいくつのステップがありますか?すべてのステップからIDを取得しますか? –