Veritabanında iki tablo var:Dizi elemanları sırası ile dizi türü ile PostgreSQL JOIN, nasıl uygulanır?
CREATE TABLE items(
id SERIAL PRIMARY KEY,
... some other fields
);
Bu tablo benzersiz bir kimlik ile birlikte gelen veri satırını içerir.
CREATE TABLE some_chosen_data_in_order(
id SERIAL PRIMARY KEY,
id_items INTEGER[],
);
Bu tablo dizi tipi alanı içeriyor. Her sıra, belirli sırayla items
tablosundaki ID değerlerini içerir. Örneğin: {2,4,233,5}
.
Şimdi, some_chosen_data_in_order
tablosundan, some_chosen_data_in_order
tablosundan seçilen satır için, dizi tipindeki öğeler için sırayla veri almak istiyorum.
Girişim 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 = ?
İkinci girişim şu şekilde oldu:
SELECT I.* FROM items AS I
WHERE I.id = ANY
(ARRAY[SELECT S.id_items FROM some_chosen_data_in_order WHERE id = ?])
Ancak bunların hiçbiri, kimlikleri dizi alanında olduğu gibi aynı sırada tutmuyor. Xzx44 tablosundan, belirli bir satır için some_chosen_data_in_order
tablosundan dizi kimlikleriyle eşleşen veriye nasıl yardımcı olabilirsiniz?
unnest() gerçekten harika bir oyun! Bir müşterinin ID'lerinin bir listesi vardı ve onlara karşı katılmaları gerekiyordu, ancak bir geçici masala yapmanın bir yolunu bulmak istedim. Katılabilirsiniz (dürüst olarak (ARRAY [1,2,3])) idlist olarak seçilebilir ve bir şampiyon gibi çalışır. Teşekkürler! – apinstein
@apinstein bana sorguyu gösterebilir misin? hala dint olsun –
Mükemmel ipucu, teşekkürler – Valentin