一句話查詢出指定節點的葉子記錄

xiaohuihui發表於2020-06-16

資料庫中經常用外來鍵到本表的結構儲存樹狀資料。比如多級的行政區劃表中,【ParentID】外來鍵到本表的【ID】,要找到紐約州下所有的最基層行政區劃,早期的 SQL 沒有提供遞迴能力,這類查詢很難寫,尤其葉子記錄還可能處於不同的深度。

 

這種情況如果用集算器 SPL 語言就比較容易,從資料庫得到原始資料:

>T=connect(”mysqlDB”).query(“select * from T”)

然後用遞迴函式 nodes 的 @d 選項直接就得到了葉子記錄:

>T.switch(ParentID,T:ID),leaves=T.nodes@d(ParentId,T.select@1(name=="New York"))

除了遞迴處理資料庫裡的資料,遞迴處理資料夾裡的檔案,遞迴處理多層的 JSON 資料都很方便,在樹中遞迴的透過父找子 / 子找父也做了全面支援,請參考這篇文章裡的詳細介紹: 。

 

當資料不在資料庫裡時,SPL 載入資料仍然方便:
=file(“d:/t.csv”).import(;,",")

SPL能很方便地嵌入到JAVA應用,可參考 。

具體使用方法可參考 。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2698559/,如需轉載,請註明出處,否則將追究法律責任。

相關文章