O Postgresql Selecionar uma coluna ou outra sob o mesmo alias de acordo com o valor de uma terceira coluna

0

Pergunta

Eu tenho um banco de dados cujo esquema pode ser simplificado da seguinte forma: um tabela de produtos, e duas tabelas contendo valores para enriquecer a descrição de um produto. Eu gostaria de fazer uma consulta SELECT, permitindo-me para exibir o id do produto, seguido por uma coluna que contém um valor. Este valor pode ser selecionado no attribute_value_1 tabela, se o produto é do tipo 'Type1' ou no attribute_value_2 tabela, se o produto é do tipo 'Tipo2'.

Tabela de produtos

product_id tipo
1 gráfico1
2 tipo2

Tabela attribute_value_1

id product_id valor
1 1 XXXXX

Tabela attribute_value_2

id product_id valor
1 2 ZZZZZ

Assim, no exemplo a seguir, o resultado da consulta deve ser :

Resultado

product_id valor
1 XXXXX
2 ZZZZZ

Você sabe como posso proceder?

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

Melhor resposta

1

você pode usar dois para a esquerda junta-se com cada atributo da tabela e, em seguida, usando a função coalesce() função , obter o valor daqueles tabela 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

Em outros idiomas

Esta página está em outros idiomas

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