私のデータベースのテーブルには、以下のようなデータが保持されています。
                     TBLlocations
 -------------------------------------------------------
 LocationId    LocationName      RegisteredUnder    Type
 --------------------------------------------------------
  LOC100        Location1            0               0
  LOC201        Location2           LOC100           2
  LOC102        Location3           LOC201           1
  LOC302        Location4           LOC201           1
  LOC103        Location5           LOC201           1
  LOC104        Location6           LOC201           1
  LOC105        Location7           LOC104           1
  LOC106        Location8           LOC105           1
  LOC107        Location9           LOC106           1
ここで、クエリが最初のレベルの場所を返すように、上記のテーブルから場所を選択する必要があります。上記のテーブルを考慮すると、私のクエリは、タイプが「1」の場所を返す必要があり、タイプが「1」の最初のレベルの子の場所である必要があります。上記の表から、ロケーション 3 から 6 は第 1 レベルのロケーションであるため、クエリは次を返す必要があります。
---------------
   Location3 
   Location4 
   Location5 
   Location6
「タイプ」の条件を提供する同じテーブルに参加しようとしました。これは私が作成したクエリです:
Select Distinct t1.LocationId,t1.LocationName,t1.RegisteredUnder from TBLlocations t1
join TBLlocations t2 on t2.RegisteredUnder!=t1.LocationId
where t1.Type='1' and t2.Type='1'
order by t1.RegisteredUnder
上記のクエリは、以下に示すように、タイプ「1」のすべての場所を返しました。
--------------------------------------------------
LocationId     LocationName        RegisteredUnder
--------------------------------------------------
  LOC102        Location3           LOC201 
  LOC302        Location4           LOC201
  LOC103        Location5           LOC201
  LOC104        Location6           LOC201
  LOC105        Location7           LOC104 
  LOC106        Location8           LOC105
  LOC107        Location9           LOC106  
したがって、正確な結果を返すクエリが必要です。クエリで使用できる唯一のパラメーターは「タイプ」であり、常に「1」です。
PS: SQL Server 2008 を使用しています。