有子查询的mysql codeigniter?

时间:2017-01-30 06:37:04

标签: mysql codeigniter having

如何在获得此类查询后添加? opbal有条件和减去加上它超过零? 如果减去> nol show,以及所有opbal,minus和plus> NOL 如果减去> nol show,以及所有opbal,minus和plus> NOL

$filter_col="";
		if(isset($filters['warehouse'])){
			foreach ($filters['warehouse'] as $filter_whse) {
				
				$filter_col.= "sum( if( iw.location_id = ".$filter_whse.", ih.item_qty, 0 ) ) AS location_".$filter_whse.",";
				$filter_col.= "sum( if( iw.location_id = ".$filter_whse.", ih.total_value, 0 ) ) AS tot_val_location_".$filter_whse.",";
				$filter_col.= "sum( if( iw.location_id = ".$filter_whse." AND ih.doc_date < "."'".$filters['date_from']."'".", ih.item_qty, 0 ) ) AS opening_qty_".$filter_whse.",";
				$filter_col.= "sum( if( iw.location_id = ".$filter_whse." AND ih.doc_date >= "."'".$filters['date_from']."'"." AND ih.item_qty > 0, ih.item_qty, 0 ) ) AS plus_qty_".$filter_whse.",";
				$filter_col.= "sum( if( iw.location_id = ".$filter_whse." AND ih.doc_date >= "."'".$filters['date_from']."'"." AND ih.item_qty < 0, ih.item_qty, 0 ) ) AS minus_qty_".$filter_whse.",";

			}
		}else{
			$all_location= $this->location_model->get_site_location();

			foreach ($all_location as $row_all_location) {
				
				$filter_col.= "sum( if( iw.location_id = ".$row_all_location['location_id'].", ih.item_qty, 0 ) ) AS location_".$row_all_location['location_id'].",";
				$filter_col.= "sum( if( iw.location_id = ".$row_all_location['location_id'].", ih.total_value, 0 ) ) AS tot_val_location_".$row_all_location['location_id'].",";
				$filter_col.= "sum( if( iw.location_id = ".$row_all_location['location_id']." AND ih.doc_date < "."'".$filters['date_from']."'".", ih.item_qty, 0 ) ) AS opening_qty_".$row_all_location['location_id'].",";
				$filter_col.= "sum( if( iw.location_id = ".$row_all_location['location_id']." AND ih.doc_date >= "."'".$filters['date_from']."'"." AND ih.item_qty > 0, ih.item_qty, 0 ) ) AS plus_qty_".$row_all_location['location_id'].",";
				$filter_col.= "sum( if( iw.location_id = ".$row_all_location['location_id']." AND ih.doc_date >= "."'".$filters['date_from']."'"." AND ih.item_qty < 0, ih.item_qty, 0 ) ) AS minus_qty_".$row_all_location['location_id'].",";

			}
		}

		$this->db->select("*");
		$this->db->from("v_itemhistory");
		// $this->db->where('doc_date >= ',$filters['date_from']);
		$this->db->where('doc_date <= ',$filters['date_to']);

		$sub_query = $this->db->get_compiled_select();

		$this->db->select("i.item_id, i.item_code, i.item_name,".$filter_col." , uom.uom, i.item_category_id, c.category_name");
		$this->db->from("t_inventory i");
		$this->db->join("t_uom uom","uom.uom = i.uom");
		$this->db->join("v_itembalance_warehouse iw","iw.item_id = i.item_id");
		$this->db->join("t_site_location s","s.location_id = iw.location_id");
		$this->db->join("t_inventory_category c","c.category_id = i.item_category_id");
		$this->db->join("($sub_query) as ih","ih.item_id = i.item_id and ih.whse_id = iw.location_id","left");
		if(isset($filters['warehouse'])){
			$this->db->where_in("iw.location_id",$filters['warehouse']);
		}
		if(isset($filters['category'])){

			$this->db->where_in('c.category_id',$filters['category']);
		}
		(isset($filters['typing']))?$this->db->where('i.item_id',$filters['typing'] ):'';
		$this->db->group_by("`i`.`item_id`, `i`.`item_code`, `i`.`item_name`, `uom`.`uom`,  `i`.`item_category_id`");
		$this->db->order_by("i.item_category_id,i.item_id","asc");

0 个答案:

没有答案