如何递归检索可用的城镇?
How to recursively retrieve towns available?
我正在制作交通应用程序,现在,我正在实施 SQL 并编写一些查询。
我有一个 table Train(From, To),它基本上是一个有两列的 table。第一列是您出发的城市,下一列是您到达的城市。
我的问题是如何从某个城市递归检索所有可以去的城市?例如,这是一个示例数据集:
From
To
St Louis
Jefferson City
Jefferson City
Kirkwood
Chicago
St Louis
Kirkwood
Belleville
因此,如果我将圣路易斯传入此递归函数,我会得到杰斐逊城、柯克伍德和贝尔维尔作为可到达的城市。
SQL 语言是 Postgres/Sqlite :)
使用WITH RECURSIVE
:
WITH RECURSIVE
c(t) AS (
SELECT "to" FROM cities
WHERE "from" = 'St Louis'
UNION
SELECT "to" FROM cities, c
WHERE c.t = cities."from"
)
SELECT t FROM c;
(在 sqlite3 中测试)。
我正在制作交通应用程序,现在,我正在实施 SQL 并编写一些查询。
我有一个 table Train(From, To),它基本上是一个有两列的 table。第一列是您出发的城市,下一列是您到达的城市。
我的问题是如何从某个城市递归检索所有可以去的城市?例如,这是一个示例数据集:
From | To |
---|---|
St Louis | Jefferson City |
Jefferson City | Kirkwood |
Chicago | St Louis |
Kirkwood | Belleville |
因此,如果我将圣路易斯传入此递归函数,我会得到杰斐逊城、柯克伍德和贝尔维尔作为可到达的城市。
SQL 语言是 Postgres/Sqlite :)
使用WITH RECURSIVE
:
WITH RECURSIVE
c(t) AS (
SELECT "to" FROM cities
WHERE "from" = 'St Louis'
UNION
SELECT "to" FROM cities, c
WHERE c.t = cities."from"
)
SELECT t FROM c;
(在 sqlite3 中测试)。