0

さて、基本的に必要なのは、多くの結合を使用し、これらの行番号を使用してwhere句を使用しながら行番号を取得する方法です。

のようなもののような

select ADDRESS.ADDRESS FROM ADDRESS 
INNER JOIN WORKHISTORY ON WORKHISTORY.ADDRESSRID=ADDRESS.ADDRESSRID
INNER JOIN PERSON ON PERSON.PERSONRID=WORKHISTORY.PERSONRID
WHERE PERSONRID=<some number> AND WORKHISTORY.ROWNUMBER=1

ただし、その1つのテーブルでこのクエリに対してROWNUMBERを生成する必要があります。したがって、2番目のWORKHISTORYレコードのアドレスにアクセスする場合は、次のコマンドを使用しWORKHISTORY.ROWNUMBER=2て1つのWORKHISTORYレコードのアドレスを循環できます。ADDRESS.ROWNUMBER=1ADDRESS.ROWNUMBER=2

これは、自動生成されたクエリである必要があります。したがって、関連するテーブルに到達するために10を超える内部結合が存在する可能性があり、残りのテーブルとは関係なく、各テーブルのレコードを循環できる必要があります。

RANK関数とROWNUMBER関数があることは知っていますが、すべての内部結合があるため、どのように機能するかわかりません。

注:このクエリ例では、ROWNUMBERが自動的に生成されます。実際のテーブルに保存しないでください

4

1 に答える 1

1

一時テーブルを使用できますか?

このようなコードを書くことができるので、私は尋ねます:

select a.field1, b.field2, c.field3, identity (int, 1,1)  as TableRownumber into #temp
from table1 a 
join table2 b on a.table1id = b.table1id
join table3 c on b.table2id = c.table2id

select * from #temp where ...
于 2009-10-07T18:38:05.700 に答える