sql:如何连接两个具有真/假值的表[postgresql语言]

c2e8gylq  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(220)

我有三张table

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
bsxbgnwa

bsxbgnwa1#

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

相关问题