Postgresql Vyberte sloupec nebo jiný pod stejným aliasem podle hodnoty třetího sloupce

0

Otázka

Mám databázi, jejíž schéma lze zjednodušit tímto způsobem: produkt stůl, a dvě tabulky, které obsahují hodnoty obohatit popis produktu. Rád bych, aby se SELECT dotazu mi umožní zobrazení id produktu následuje sloupec obsahující hodnotu. Tato hodnota může být vybrán v attribute_value_1 stolu, pokud výrobek je typu 'Typ1 nebo v attribute_value_2 stolu, pokud výrobek je typu '2'.

Tabulka produktu

product_id typ
1 typ1
2 type2

Tabulka attribute_value_1

id product_id hodnota
1 1 XXXXX

Tabulka attribute_value_2

id product_id hodnota
1 2 ZZZZZ

Takže v následujícím příkladu, výsledek dotaz by měl být :

Výsledek

product_id hodnota
1 XXXXX
2 ZZZZZ

Víte, jak mohu pokračovat?

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

Nejlepší odpověď

1

můžete použít dvě levé připojí se každý atribut tabulky a pak pomocí coalesce() funkce , získat hodnotu z těch tabulka thatmatched:

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

V jiných jazycích

Tato stránka je v jiných jazycích

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