php - sql问题(店铺 商家 活动的sql)
本文介绍了php - sql问题(店铺 商家 活动的sql)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
3张表
店铺表shop
shopid shopname
1 水果店
2 衣服店
3 粮食店
活动表activity
aid shopid actname
1 1 送苹果活动
2 1 送橘子活动
3 2 送衬衫活动
4 2 送鞋子活动
商户表user
商户id 店铺id 商户等级
uid shopid level
87 1 高级商户
88 2 中级商户
89 3 低级用户
需要找到有活动的店铺,然后显示信息,最终结果
水果店 高级用户 有送苹果和送橘子活动
衣服店 中级用户 有送衬衫和送鞋子活动
自己的思路:
1.shop表inner join activity表 group by shopid 找到有活动的店铺
shoplist = select shopid inner join activity on a.shopid=s.shopid
2.然后遍历shoplist
$res = array();
for($shoplist as $val){
$info = select * from user left join activity on u.shopid=a.shopid where shopid=$val['shopid'] //
$info = array(
array(level=>'高级用户',actname='送苹果活动'),
array(level=>'高级用户',actname='送橘子活动'),
);
处理$info
最后店铺信息为 $res[] = array('高级用户,送苹果活动,送橘子活动');
}
问题:觉得这样做有点多余,找店铺inner join了活动表,获取活动信息又left join了活动表,能不能直接用一条sql解决这个问题
总结:group_concat把同一组的内容合并在一起
解决方案
select shopname,level,group_concat(actname) from(select shop.shopname,user.level,activity.actname from shop inner join user on shop.shopid = user.shopid inner join activity on shop.shopid = activity.shopid) group by shopname,level
这篇关于php - sql问题(店铺 商家 活动的sql)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文