Вы можете уточнить следующее:
1) Сколько много фильмов 1000/100000/10000000 (например, личной коллекции, небольшое приложение, глобальная библиотека) 2) Сколько частей вы смотрите и как бы вам понравились представленные данные?
Логически разумно, если имеется достаточное количество конечных частей (менее 10), вы можете сделать некоторую неуклюжую конструкцию sql, чтобы перечислить все предыдущие части и будущие части. Как всегда, если вы только после того, как единственная предыдущей, если он существует, и следующий, если он существует, вы можете попробовать:
Решение 1: (перечисляются все кинороли и предыдущие и следующие части, если они существуют)
select e1.movie_id, e1.title, pp.movie_id as prev_movie_id, np.movie_id as next_movie_id
from dbo_Movie AS e1
left join dbo_Movie AS pp
ON e1.previous_part = pp.movie_id
left join dbo_Movie AS np
ON np.previous_part = e1.movie_id
Ожидаемый результат:
movie_id | title | prev_movie_id | next_movie_id
m1p2 | zed | m1p1 | m1p3
m1p3 | zed | m1p2 | null
m1p1 | zed | null | m1p2
m2p1 | phi | null | null
m3p1 | quo | null | m3p2
m3p2 | quo | m3p1 | null
Решение 2.1: Списки всех киноролей с предыдущими частями следующих
select e1.movie_id, e1.title, np.movie_id as next_movie_id
from dbo_Movie AS e1
inner join dbo_Movie AS np
ON np.previous_part = e1.movie_id
--inner join means anything rows where this isn't true will be removed
Ожидаемый результат:
movie_id | title | next_movie_id
m1p2 | zed | m1p3
m1p1 | zed | m1p2
m3p1 | quo | m3p2
Решение 2.2: Списки всех частей фильма с предыдущими следующих частей
select e1.movie_id, e1.title, pp.movie_id as prev_movie_id
from dbo_Movie AS e1
inner join dbo_Movie AS pp
ON e1.previous_part = pp.movie_id
Ожидаемый результат:
movie_id | title | prev_movie_id
m1p2 | zed | m1p1
m1p3 | zed | m1p2
m3p2 | quo | m3p1
Примечания:
1) Нули не с чистым пониманием, которым могли бы быть как prev_movie_id, так и next_movie_id.
2) Там, видимо, нет ANSI SQL стандарт для ограничения результатов в SQL: 1999, но есть в последующих стандартах, как упомянуто bobince в ответ: Is there an ANSI SQL alternative to the MYSQL LIMIT keyword?
Вы используете как MySQL и MS Access? TOP не является стандартным SQL, я предлагаю придерживаться стандарта ANSI/ISO SQL при написании переносного SQL. – jarlh
Да, я. Я думаю, что TOP 1 можно удалить. – Robert