Postgresql Seleccione una columna u otro bajo el mismo alias de acuerdo al valor de la tercera columna

0

Pregunta

Tengo una base de datos cuyo esquema se puede simplificar de esta manera: un producto de la tabla, y dos tablas que contienen los valores para enriquecer la descripción de un producto. Me gustaría hacer una consulta de selección, lo que me permite mostrar el id de producto, seguido por una columna que contiene un valor. Este valor puede ser seleccionado en el attribute_value_1 tabla si el producto es de tipo 'Tipo1' o en el attribute_value_2 tabla si el producto es de tipo 'Tipo 2'.

Tabla de productos

product_id tipo de
1 type1
2 type2

Tabla attribute_value_1

id product_id valor
1 1 XXXXX

Tabla attribute_value_2

id product_id valor
1 2 ZZZZZ

Así, en el ejemplo siguiente, el resultado de la consulta debe ser :

Resultado

product_id valor
1 XXXXX
2 ZZZZZ

¿Sabes cómo puedo proceder?

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

Mejor respuesta

1

se pueden usar dos a la izquierda se une con cada uno de los atributos de la tabla y, a continuación, utilizando unen función (), obtener el valor de esos tabla 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

En otros idiomas

Esta página está en otros idiomas

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