1
私はテーブルobjs
を持っていますが、これにはファイルとディレクトリに関する情報が含まれています。 各レコードは、レコードの行SQLiteの再帰的更新
id, fileSize, parentID, dirSize.
それぞれ(ただし最初のレコード)を有しPARENTIDが有する親ディレクトリのIDに等しいこと。
各ディレクトリのサイズを再帰的に数えたいと思います。
再帰的なファイルおよびdirsのパスに基づいてなし簡単な解決策は、
update objs set dirSize= (
select sum(b.fileSize) from objs b where b.fullPath like objs.fullPath||'\%' and b.isDir=0)
where isDir=1
である私は理解できない私は、再帰的な方法にそれを書き換えたいが、私は
WITH RECURSIVE
works_for_alice(n, m) AS (
select id, fileSize from objs where id=9
UNION
SELECT a.id, a.fileSize FROM objs a, works_for_alice b
WHERE a.parentID=b.n
)
SELECT sum(m) FROM works_for_alice
にstucked、この選択方法の適用方法
SELECT sum(m) FROM works_for_alice
objs
テーブルの更新と
WITH
に
select id, fileSize from objs where id=**9**
にIDの値を変更する方法!
このクエリで解決
'works_for_alice'は* *あなたは変わらず採用しなければならないSQLキーワードではなく、 'N' /' mも良い名前ではない。 –
私は知っている、それはちょうどそれがコピー貼り付けられ、深夜の3時間で書き直された実験的なコードスニペットです:)... –