Tengo dos tablas en la base de datos:PostgreSQL JOIN con tipo de matriz con orden de elementos de matriz, ¿cómo implementarlo?
CREATE TABLE items(
id SERIAL PRIMARY KEY,
... some other fields
);
Esta tabla contiene vienen fila de datos con la identificación única.
CREATE TABLE some_chosen_data_in_order(
id SERIAL PRIMARY KEY,
id_items INTEGER[],
);
Esta tabla contiene el tipo de campo de matriz. Cada fila contiene valores de identificadores de la tabla items
en un orden específico. Por ejemplo: {2,4,233,5}
.
Ahora, quiero obtener datos de la tabla items
para la fila elegida de la tabla some_chosen_data_in_order
con el fin de elementos en tipo de matriz.
Mi intento fue JOIN:
SELECT I.* FROM items AS I
JOIN some_chosen_data_in_order AS S ON I.id = ANY(S.id_items) WHERE S.id = ?
segundo intento fue subconsulta como:
SELECT I.* FROM items AS I
WHERE I.id = ANY
(ARRAY[SELECT S.id_items FROM some_chosen_data_in_order WHERE id = ?])
Pero ninguno de ellos mantienen los identificadores en el mismo orden que en el campo de matriz. ¿Podría ayudarme, cómo obtener datos de la tabla items
con correspondencia con las ID de matriz, ordenar desde la tabla some_chosen_data_in_order
para una fila específica?
unnest() es un truco genial! Tenía una lista de identificación de un cliente y necesitaba unirme a ellos, pero quería encontrar una manera de hacerlo sin una tabla temporal. Puedes unirte (selecciona unnest (ARRAY [1,2,3])) como idlist y funciona como un campeón. ¡Gracias! – apinstein
@apinstein ¿me puede mostrar la consulta? todavía no lo entiendo –
Consejo excelente, gracias – Valentin