Postgresql选择列或其他根据相同的别名根据的价值的一个第三列

0

的问题

我有一个数据库,其架构可以简化这种方式:一种产品表,以及两个表,含有的价值观丰富的介绍的产品。 我想做一个选择的查询允许我显示的产品id随后一栏包含的价值。 这个值可以选择在attribute_value_1表如果产品的类型'1'或在attribute_value_2表如果产品的类型2型'.

表产品

product_id 类型
1 1
2 2型

表attribute_value_1

id product_id
1 1 XXXXX

表attribute_value_2

id product_id
1 2 弓和箭体

因此,在下面的例子中,查询的结果应该是:

结果,

product_id
1 XXXXX
2 弓和箭体

你知道我怎么可以继续吗?

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

最好的答案

1

你可以用两个左与每个表属性,然后使用合并()功能,得到的价值从那些表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

其他语言

此页面有其他语言版本

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