$v){ $tmpk=$v['run_id'].'-'.$v['prod_id']; $tmp["$tmpk"]=$v; $tmp["$tmpk"]['id']=$k; } return $tmp; } //合并数组 function multi_merge($a,$b){ $arr = array(); foreach($a as $k=>$r){ if(isset($b[$k])){ $arr[$k] = array_merge($r,$b[$k]); }else{ $arr[$k] =$r; $arr[$k]['num2']=0; } } foreach($b as $k=>$r){ if(!isset($arr[$k])){ $arr[$k] =$r; $arr[$k]['num1']=0; } } return $arr; } $pdo = conn1(); //从订单角度得到run_prod表的数据 $sql1 = "SELECT l.line_id, m.run_id, m.prod_id, m.run_date, count(m.order_id) as num1 FROM order_main m LEFT JOIN opera_line l ON m.PARENT_PROD_ID = l.line_id LEFT JOIN opera_tickets t on m.prod_id=t.TICKET_ID LEFT JOIN opera_line w on t.line_id=w.line_id WHERE m.PARENT_ORDER_ID <> 0 AND m.run_date >= '2017-02-05' AND m.ORDER_VALID_STATUS = 1 AND m.CANCEL_FLAG = 0 AND m.PROD_ID <> 380001 AND w.line_type in (255,256) AND m.ORDER_PROD_TYPE = 82 group by run_id,prod_id order by m.run_date;"; $res1 = $pdo->query($sql1); $res1->setFetchMode(PDO::FETCH_ASSOC); $arr1 = $res1->fetchAll(); //run_prod表本身的数据 $sql2="SELECT b.prod_id as line_id, b.run_id, a.prod_id, b.run_date, a.saled_count as num2 FROM run_prod a LEFT JOIN run_main b ON a.run_id = b.run_id WHERE b.run_date >= '2017-02-05' and a.CANCEL_FLAG=0 and a.SALED_COUNT<>0 AND b.PROD_ID <> 0 order by b.run_date;"; $res2 = $pdo->query($sql2); $res2->setFetchMode(PDO::FETCH_ASSOC); $arr2 = $res2->fetchAll(); //切换key值 $arr1=change_key($arr1); //print_r($arr1); $arr2=change_key($arr2); /*print_r($arr1); print_r($arr2); exit;*/ $arr=multi_merge($arr1,$arr2); ?>
ID | 出发日期run_date | 班次run_id | 票种prod_id | 实际订单数量 | 记录已售数量 |