我在http://sqlfiddle.com/#!9/b6015c6/2
创建了sql小提琴我的表架构如下:
id productid attributeid
1 5 10
2 5 11
3 6 11
4 7 10
假设记录如下:
表:assignedattributeid
id productname
5 P1000
6 P2000
7 P3000
表:产品
var res = {'test' : "tt" , 'right' : '22'}
$.post('/test/${doc.id}',res,'application/json')
实际上我希望得到所有那些同时分配了属性10和11的产品。
我使用此查询:从左边的产品中选择不同的产品。* 在assignedattributeid.productid = products.id上加入assignedattributeid 其中assignedattributeid.attributeid在(10,11)
中
但它不起作用。它显示所有记录。实际上它应该只显示P1000产品。
查询中的任何建议?
答案 0 :(得分:3)
按产品分组并添加HAVING
条件,该条件计算唯一属性 - 它必须为2.
select products.* from products
join assignedattributeid on assignedattributeid.productid=products.id
where assignedattributeid.attributeid in (10,11)
group by products.id
having count(distinct assignedattributeid.attributeid) = 2
http://sqlfiddle.com/#!9/b6015c6/11
或者按assignedattributeid
attributeid
表格一次
select distinct products.* from products
join assignedattributeid a1 on a1.productid=products.id
join assignedattributeid a2 on a2.productid=products.id
where a1.attributeid = 10
and a2.attributeid = 11
http://sqlfiddle.com/#!9/b6015c6/8
如果products.id
是主键,assignedattributeid(productid, attributeid)
是唯一键,则不需要DISCTINCT
关键字。
答案 1 :(得分:1)
试试这个
{{1}}