首页 > 解决方案 > SQL:如何连接具有 TRUE/FALSE 值的 2 个表?[PostgreSQL]

问题描述

我有 3 张桌子

tblProduts(productID, productName)
(1, "Product1")(2, "Product2") 

tblProductHasAttributes(productID, attributeID)
(1,1)(1,2)(2,1)(2,3)

tblAttributes(attributeID, attributeName)
(1, "Size")(2, "Weight")(3,"Color")

我需要带有列(attributeID、attributeName、Checked)的所有属性列表的结果,以及与表 tblProductHasAttributes 中的一个特定产品(ProductID=someValue)相关的那些属性应该在列 Checked 值 TRUE/FALSE 中。

ProductID=1 的预期结果

attributeID,attributeName,Checked
     1     ,   Size      , True
     2     ,   Weight    , True
     3     ,   Color     , False

标签: sqlpostgresql

解决方案


select a.attributeID, a.attributeName,
       case when max(productID) is not null 
            then TRUE 
            else FALSE 
       end as checked
from tblAttributes a 
left join tblProductHasAttributes a on a.attributeID = p.attributeID
                                   and p.ProductID = 1
group by a.attributeID

推荐阅读