Mysql查询满足多个类别的产品列表

问题:

像淘宝中搜索满足多个条件的产品列表

举例:

有个产品表product_page:

id产品字段...
1产品字段内容...
2产品字段内容...

有个产品类别表property_page:(其中,a、b属于1类,c、d属于2类,e、f属于3类)

idtypetypeinstance
11a
21b
32c
42d
53e
63f

产品与类别关系表product_property:(其中,product_id是product_page的id,property_id是property_page的id)

idproduct_idproperty_id
111
221
314
442
515

问题1,查询所有带有1类中的a属性的产品:

SQL查询:(先查询a属性的类别id是1)

SELECT * FROM product_page where id in 
(
	select p.product_id from product_property p where p.property_id=1
) 

问题2,查询所有同时满足属于a属性和d属性的产品:

SQL查询:(先查询a属性的类别id是1,c属性的类别id是3)

SELECT * FROM product_page where id in 
(
		select p.product_id from (
			product_property p,
			(select product_id,property_id from product_property) p2 
		) where p.property_id=1 and p2.property_id=3 and  p.product_id=p2.product_id
)

问题3,查询所有同时满足属于a属性和d属性和e属性的产品:

SQL查询:(先查询a属性的类别id是1,c属性的类别id是3,e属性的类别id是5)

SELECT * FROM product_page where id in 
(
	select p.product_id from 
	(
			product_property p,
			(select product_id,property_id from product_property) p2,
			(select product_id,property_id from product_property) p3 
	)
	where p.property_id=1 and p2.property_id=3 and p3.property_id=5 and 
	p.product_id=p2.product_id and 
	p2.product_id=p3.product_id
)

示例图片:




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值