Хорошо, в принципе, нужен способ иметь номера строк при использовании большого количества объединений и иметь предложения 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
и, если скажем, что у нас есть два совпадающих адреса, мы могли бы циклически проходить через адреса для одной записи WORKHISTORY, используя ADDRESS.ROWNUMBER=1
и ADDRESS.ROWNUMBER=2
Это должно быть автоматически сгенерированным запросом. Таким образом, для доступа к соответствующей таблице может быть более 10 внутренних объединений, и нам необходимо иметь возможность циклически проходить по каждой записи таблицы независимо от остальных таблиц.
Я знаю, что есть функции RANK и ROWNUMBER, но я не вижу, как это будет работать для меня из-за всех внутренних соединений
примечание: в этом примере запроса ROWNUMBER должен генерироваться автоматически! Он никогда не должен храниться в фактической таблице