好的,基本上需要的是一种在使用大量连接的同时获得行号的方法,并且在 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
但是,需要为该表上的此查询生成 ROWNUMBER。因此,如果我们想访问第二个 WORKHISTORY 记录的地址,我们可以直接去WORKHISTORY.ROWNUMBER=2
,如果说我们有两个匹配的地址,我们可以使用ADDRESS.ROWNUMBER=1
和循环遍历一个 WORKHISTORY 记录的地址ADDRESS.ROWNUMBER=2
这应该能够成为自动生成的查询。因此,为了到达相关表,可能有超过 10 个内部连接,并且我们需要能够独立于其余表循环遍历每个表的记录。
我知道有 RANK 和 ROWNUMBER 函数,但由于所有内部连接,我看不到它对我的工作方式
注意:在这个示例查询中,ROWNUMBER 应该是自动生成的!它永远不应该存储在实际表中