【发布时间】:2015-12-02 13:58:35
【问题描述】:
我有一个带有两个表的 SQLite 数据库:
A
PK |名称
B
PK | FK1 | FK2
在表 B 中,FK1 和 FK2 都引用了表 A 上的 PK(实际上只有一个被设置为 DB 上的外键,但 FK2 中的值仍然取自表 A 的所有 PK 的集合) .
表 B 的目的是允许非线性排序。这拥有“下一个”关系。例如:
A
PK |姓名
1 |第一
2 |第二
3 |第三个
B
PK | FK1 | FK2
1 | 1 | 2
2 | 2 | 3
这表示从 First -> Second -> Third 的线性流。
我正在寻找从 A 中对结果排序的最佳方法。最佳情况下,线性流将按照表 B 指定的顺序生成。非线性流会略有不同,但大多数情况下应按同样的方式(除了平行路径彼此相邻放置)。
我能想到的每一个连接都被我愚弄了,而 SQLite 不支持 PL/SQL,这使得这个问题变得更加困难。目前,我只是在跑步:
A left join B on A.PK = B.FK1 order by B.FK2.
连接这些表并对结果排序的最佳方式是什么?
【问题讨论】:
-
您希望它们按什么顺序排列?
-
我希望它们尽可能接近表 B 中 FK1 和 FK2 列所描述的顺序(显然在某些情况下这是不可能的)
-
我认为你需要的语法是
with recursive。这应该允许您选择任何起点并在树上行走。