表格示例:
促销(idPromo,nameUser)
公司(idCompany,nameCompany)
PromoCompany(idPromo,idCompany)
我尝试只使用一个查询,所有具有公司的促销(例如idCompany = 1)或0公司。
描述: PromoCompany是限制表...如果促销数据存在,促销只对这些公司有效,如果没有数据,促销对所有公司都有效。
示例:
Promo[{
idPromo:1
namePromo:"promo test"
},
{
idPromo:2
namePromo:"promo test 2"
}]
Company[{
idCompany:10
nameCompany:"CompanyPloof"
},{
idCompany:12
nameCompany:"CompanyPaf"
}
]
PromoCompany[{
idPromo:1
idCompany:10
},{
idPromo:1
idCompany:12
}
]
如果我的公司是CompanyPloof,则宣传片为idPromo 1 et 2
如果我的公司是CompanyPaf,促销是idPromo 2(因为不受限制)
答案 0 :(得分:0)
select p.*
from promotions p
where exists (select 1 from promocompany pc where pc.idpromo = p.idpromo and p.idcompany = 1) or
not exists (select 1 from promocompany pc where pc.idpromo = p.idpromo);
我建议您对数据模型进行一些小改动。在promotions
中添加一个标记,说明促销是否适用于所有公司或是否受限制。搜索表格有点尴尬 - 可能会让人感到困惑。向表中添加一行可能会使其他人的促销失效。