gpt4 book ai didi

postgresql - 如何通过来自另一个表但类型不同的多个连接记录来过滤数据库表?

转载 作者:行者123 更新时间:2023-11-29 14:24:55 26 4
gpt4 key购买 nike

我有一个 products表格和相应的ratings包含外键的表 product_id , grade(int)type这是一个接受值的枚举 robustnessprice_quality_ratio

等级接受从 1 到 10 的值。例如,如果我想过滤最低等级为 robustness 的产品,查询会是什么样子? price_quality_ratio 将是 7 和最低等级会是 8 吗?

最佳答案

您可以加入两次,每次评分一次。 inner join 消除了不符合任何评级标准的产品,

select p.*
from products p
inner join rating r1
on r1.product_id = p.product_id
and r1.type = 'robustness'
and r1.rating >= 7
inner join rating r2
on r2.product_id = p.product_id
and r2.type = 'price_quality_ratio'
and r2.rating >= 8

另一种选择是使用条件聚合。这只需要一个join,然后是一个group by;评级标准在 having 子句中检查。

select p.product_id, p.product_name
from products p
inner join rating r
on r.product_id = p.product_id
and r.type in ('robustness', 'price_quality_ratio')
group by p.product_id, p.product_name
having
min(case when r.type = 'robustness' then r.rating end) >= 7
and min(case when r.type = 'price_quality_ratio then r.rating end) >= 8

关于postgresql - 如何通过来自另一个表但类型不同的多个连接记录来过滤数据库表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58904022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com