可否传授我一个内功?
来源:12-1 12.1 日志问题定位
野生码农在线co腚
2018-12-03
午休完 上问题 -_-
3回答
-
野生码农在线co腚
提问者
2018-12-03
顺便,老师喜欢看什么格式的提问, 以后我就弄什么格式的,方便您预览
00 -
野生码农在线co腚
提问者
2018-12-03
一个优惠券表 coupon
id , 优惠券主键Id
coupon_name,优惠券名称
goods_id, 可用商品id(,号分割)
一个商品表 goods
id, 商品主键id
goods_name, 商品名称.
-----------------------
优惠券名称 | 可用商品 |
-----------------------
满100减20 | 1,2,3,4 |
满100减20 | 2,3,4 |
满100减20 | 1,2,5 |
问题一:
可用商品如何写sql才能显示商品名称.
能不能给出两种方案,
一种低效的子查询的语句怎么写,
第二种高效的 循环的怎么写.
我问别人了,别人说先取出所有优惠券的商品id,然后再用商品id,
去商品表取出与之对应的商品名称K-V, 但是不太会写啊,吭哧吭哧
$sql = " select * from coupon ",
$ret = Db::query($sql);
$arr = [];
foreach ($ret as $key => $value) {
$ids = explode(',', $value['goods_id']);
foreach($ids as $v){
if(!in_array($v, $arr)){
$arr[] = $v;
}
}
}
这样好像就取出了所有优惠券的可用商品id了把,接下来不知道怎么做了.
问题二:现在这是两张表,如果我设计第三张表.专门来存优惠券的id 和 商品的id
id 主键Id
coupon_id 优惠券id
goods_id 商品id
-----------------
id | coupon_id | goods_id |
1 | 1 | 1 |
2 | 1 | 2 |
3 | 1 | 3 |
4 | 1 | 4 |
这样设计好像也可行. 但是好像也没必要设计三张表.如果在大公司,大型项目是两张表,还是三张表
(不要说看需求.想听您的经验)
暂时就这两个问题了, 谢谢老师
00 -
singwa
2018-12-03
哈哈,您需要什么内工?
012018-12-03
相似问题