表名:产品
product_id名称
1 test1
2 test2
3 test3
表名:product_type
product_type_id product_fk type_name type_percentage
1
1
尼龙
50
2
1
棉
50
3
2
棉
50
4
2
聚
50
五
3
棉
50
6
3
丝
50
我需要的产品有棉50%和尼龙50%,结果是:
product_id名称
1 test1
请帮忙! 谢谢!
答案 0 :(得分:0)
有几种方法可以做到这一点。
一种方法是多次将products表连接到product_type表:
select p.product_id,p.name
from products p
inner join product_type pt1 on pt1.product_fk = p.product_id
inner join product_type pt2 on pt2.product_fk = p.product_id
where pt1.type_name = 'cotton'
and pt1.type_percentage = 50
and pt2.type_name = 'nylon'
and pt2.type_percentage = 50
另一种选择是使用EXISTS
:
select p.product_id,p.name
from products p
where exists (
select null
from product_type pt1
where pt1.product_fk = p.product_id
and pt1.type_name = 'cotton'
and pt1.type_percentage = 50
)
and exists (
select null
from product_type pt2
where pt2.product_fk = p.product_id
and pt2.type_name = 'nylon'
and pt2.type_percentage = 50
)