У меня есть две таблицы в базе данных:
CREATE TABLE items(
id SERIAL PRIMARY KEY,
... some other fields
);
В этой таблице содержится строка данных с уникальным идентификатором.
CREATE TABLE some_chosen_data_in_order(
id SERIAL PRIMARY KEY,
id_items INTEGER[],
);
В этой таблице содержится поле типа массива. Каждая строка содержит значения идентификаторов из таблицы items в определенном порядке. Например: {2,4,233,5}.
Теперь я хочу получить данные из таблицы items для выбранной строки из таблицы some_chosen_data_in_order с порядком для элементов в типе массива.
Моя попытка была ПРИСОЕДИНЯЙТЕСЬ:
SELECT I.* FROM items AS I
JOIN some_chosen_data_in_order AS S ON I.id = ANY(S.id_items) WHERE S.id = ?
Вторая попытка была подзапросом вроде:
SELECT I.* FROM items AS I
WHERE I.id = ANY
(ARRAY[SELECT S.id_items FROM some_chosen_data_in_order WHERE id = ?])
Но ни один из них не сохраняет идентификаторы в том же порядке, что и в поле массива. Не могли бы вы мне помочь, как получить данные из таблицы items, чтобы соответствовать порядку идентификаторов массива из таблицы some_chosen_data_in_order для определенной строки?