SQL Serverのデータベースでこのようなことが可能であるかどうかわかりませんか?T-SQLデータベースで再帰的なSELECTを行うことができます
言って、私はテーブルを持っている:
id INT
nm NVARCHAR(256)
cid INT --references [id]
と仮想的なデータ:
id nm cid
1 Name 1 0
2 Name 2 0
3 Name 3 1
4 Name 4 3
5 Name 5 2
6 Name 6 4
7 Name 7 2
、次のように選択のためのロジックは、次のようになります。
我々が持っていると言います、元のid、それをNとしましょう。
その後、我々はのは、その後、我々が行うX.それを呼びましょう、ルックアップIDを持っている:
SELECT [cid] FROM [TableName] WHERE [id]=X
とはい、我々はそのレコードの[NM]を返す場合、結果がNに等しいかどうかを確認。結果が0の場合、Nullを返します。結果が他のものであれば、Xが結果値になる以外は同じ選択を行います。
私は明らかにC#でこれを行うことができますが、純粋なSQL文でそのようなことができるかどうか不思議です。
PS。
SELECT [cid] FROM [TableName] WHERE [id]=6 --results is 4 (not N or 0, then continue)
SELECT [cid] FROM [TableName] WHERE [id]=4 --results is 3 (not N or 0, then continue)
SELECT [cid] FROM [TableName] WHERE [id]=3 --results is 1 (is N, then return "Name 1")
またはNが1であり、Xが7であれば、我々が得る:
SELECT [cid] FROM [TableName] WHERE [id]=7 --results is 2 (not N or 0, then continue)
SELECT [cid] FROM [TableName] WHERE [id]=2 --results is 0 (is 0, then return Null)
ただ、Nは1であり、Xが6であれば、我々が得る、上記の私のテーブルでこれを説明するために、編集: これは、SQL Server 2008で実行する必要があります。
DBMSとは何ですか? SQL Server、Oracleなど –
どのバージョンのSQL Serverですか?これは再帰的なCTE(一般的なテーブル式)で可能ですが、あなたのバージョンで利用可能かどうかわかりません。 – hvd
@hvd SQL Server 2008を使用しています – ahmd0