获取特定数据的百分比分组外键

时间:2014-10-13 14:31:11

标签: mysql sql

表名:产品
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

请帮忙! 谢谢!

1 个答案:

答案 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
)