16

Ikには、次のようにランダムな順序でルート情報を含むテーブルがあります。

from    to      street
----------------------------------
92      91      Lange Poten
100     104     Bagijnestraat
85      79      Korte Poten
91      85      Plein
79      100     Bezuidenhoutseweg

ルート情報を使用して並べ替える方法を見つけようとしています。現在の行のto列は、次の行のfrom列と一致します。この例では、必要な順序は次のとおりです。

from    to      street
----------------------------------
92      91      Lange Poten
91      85      Plein
85      79      Korte Poten
79      100     Bezuidenhoutseweg
100     104     Bagijnestraat

番号順が正しくないため、 from列またはto列の単純なORDERBYは機能しません。SQLまたはExcelを使用してメソッドを見つけようとしています。

SQLフィドルはこちら:http ://sqlfiddle.com/#!2/9ebbb

4

2 に答える 2

8

これはオラクルで動作します

select a.*
from route  a
start with a.rowid = (select min(rowid) from route )
connect by prior a.t = a.f; 
于 2012-11-21T10:13:03.393 に答える
5

SQL Server (2005+) になります

Declare @Routes Table([from] int, [to] int, [street] varchar(17))   
INSERT INTO @Routes VALUES
(92, 91, 'Lange Poten'),
(100, 104, 'Bagijnestraat'),
(85, 79, 'Korte Poten'),
(91, 85, 'Plein'),
(79, 100, 'Bezuidenhoutseweg')

;With  Cte AS
(
    SELECT  [from]
            ,[to]
            ,[street]
    FROM    @Routes
    WHERE   [from] = 92
    UNION ALL
    SELECT  r.[from]
            ,r.[to]
            ,r. [street]
FROM    @Routes AS r
JOIN    Cte c
ON      c.[to] = r.[from]
)

Select * From Cte

ここに画像の説明を入力

于 2012-11-21T10:27:00.390 に答える