Postgresql Vyberte stĺpec alebo iné za rovnakých alias podľa hodnoty tretieho stĺpca

0

Otázka

Mám databázy, ktorého schéma môže byť zjednodušené týmto spôsobom: výrobok, stôl a dve tabuľky obsahujúce hodnoty obohatiť opis produktu. Ja by som rád, aby VYBERTE dotaz dovolí, aby som zobrazenie id produktu nasleduje stĺpec obsahuje hodnoty. Táto hodnota môže byť vybraný v attribute_value_1 tabuľky, ak výrobok je typu "Type1" alebo v attribute_value_2 tabuľky, ak výrobok je typu "Type2'.

Tabuľka produkt

product_id druh
1 type1
2 type2

Tabuľka attribute_value_1

id product_id hodnota
1 1 XXXXX

Tabuľka attribute_value_2

id product_id hodnota
1 2 ZZZZZ

Tak je to v nasledujúcom príklade, výsledok dotazu by mali byť :

Výsledok

product_id hodnota
1 XXXXX
2 ZZZZZ

Viete, ako môžem postupovať?

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

Najlepšiu odpoveď

1

môžete použiť dva ľavé spája s každý atribút tabuľku a potom pomocou splývajú() funkcia , získať hodnoty z tých tabuľka 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 iných jazykoch

Táto stránka je v iných jazykoch

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