Postgresql Üçüncü bir sütunun değerine göre aynı takma ad altında bir sütun veya başka bir sütun seçin

0

Soru

Şeması bu şekilde basitleştirilebilen bir veritabanım var: bir ürün tablosu ve bir ürünün açıklamasını zenginleştirmek için değerler içeren iki tablo. Ürün kimliğini ve ardından bir değer içeren bir sütunu görüntülememe izin veren bir SELECT sorgusu yapmak istiyorum. Bu değer, ürün 'Type1' türündeyse attribute_value_1 tablosunda veya ürün 'Type2' türündeyse attribute_value_2 tablosunda seçilebilir.

Masa ürünü

ürün_adı tip
1 tip1
2 tip2

Tablo attribute_value_1

kimlik ürün_adı değer
1 1 XXXXX

Tablo attribute_value_2

kimlik ürün_adı değer
1 2 ZZZZZ

Bu nedenle, aşağıdaki örnekte, sorgunun sonucu şöyle olmalıdır: :

Sonuç

ürün_adı değer
1 XXXXX
2 ZZZZZ

Nasıl ilerleyebileceğimi biliyor musun?

case postgresql select sql
2021-11-15 15:24:30
1

En iyi cevabı

1

her öznitelik tablosuyla iki sol birleştirme kullanabilir ve ardından coalesce () işlevini kullanarak eşleşen tablodan değeri alabilirsiniz:

select P.product_id , coalesce(att1.value, att2.value) value
from product p 
left join attribute_value_1 att1
   on p.product_id = att1.product_id and p.type = 'type1'
left join attribute_value_1 att2
   on p.product_id = att2.product_id and p.type = 'type2'
2021-11-15 15:40:21

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................