Mam dwie tabele w bazie danych:PostgreSQL JOIN z typem tablicy z elementami tablicy, jak wykonać?
CREATE TABLE items(
id SERIAL PRIMARY KEY,
... some other fields
);
Ta tabela zawiera przyjść wiersz danych z unikalnym identyfikatorem.
CREATE TABLE some_chosen_data_in_order(
id SERIAL PRIMARY KEY,
id_items INTEGER[],
);
Ta tabela zawiera pole typu tablicy. Każdy wiersz zawiera wartości identyfikatorów z tabeli items
w określonej kolejności. Na przykład: {2,4,233,5}
.
Teraz chcę uzyskać dane z tabeli items
dla wybranego wiersza z tabeli some_chosen_data_in_order
z zamówieniem dla elementów w typie tablicy.
Moja próba była DOŁĄCZ:
SELECT I.* FROM items AS I
JOIN some_chosen_data_in_order AS S ON I.id = ANY(S.id_items) WHERE S.id = ?
Druga próba była Podzapytanie jak:
SELECT I.* FROM items AS I
WHERE I.id = ANY
(ARRAY[SELECT S.id_items FROM some_chosen_data_in_order WHERE id = ?])
Ale żaden z nich zachować identyfikatorów w tej samej kolejności, jak w polu tablicy. Czy możesz mi pomóc, jak uzyskać dane z tabeli items
z korespondencją z identyfikatorami tablic z tabeli some_chosen_data_in_order
dla konkretnego wiersza?
unnest() to naprawdę fajna sztuczka! Miałem listę identyfikatorów od klienta i musiałem się z nimi połączyć, ale chciałem znaleźć sposób na zrobienie tego bez tabeli tymczasowej. Możesz dołączyć (wybierz unnest (ARRAY [1,2,3])) jako idlist i działa jak mistrz. dzięki! – apinstein
@apinstein czy możesz mi pokazać zapytanie? nadal dint dostać –
Doskonała wskazówka, dzięki – Valentin