/** * SC_Queryインスタンスに設定された検索条件を元に並び替え済みの検索結果商品IDの配列を取得する。 * * 検索条件は, SC_Query::setWhere() 関数で設定しておく必要があります. * * @param SC_Query $objQuery SC_Query インスタンス * @param array $arrVal 検索パラメーターの配列 * @return array 商品IDの配列 */ function findProductIdsOrder(&$objQuery, $arrVal = array()) { $table = <<<__EOS__ dtb_products AS alldtl __EOS__; $objQuery->setGroupBy('alldtl.product_id'); if (is_array($this->arrOrderData) and $objQuery->order == '') { $o_col = $this->arrOrderData['col']; $o_table = $this->arrOrderData['table']; $o_order = $this->arrOrderData['order']; $order = <<<__EOS__ ( SELECT {$o_col} FROM {$o_table} as T2 WHERE T2.product_id = alldtl.product_id ORDER BY T2.{$o_col} {$o_order} LIMIT 1 ) {$o_order}, product_id __EOS__; $objQuery->setOrder($order); } $results = $objQuery->select('alldtl.product_id', $table, '', $arrVal, MDB2_FETCHMODE_ORDERED); $resultValues = array(); foreach ($results as $val) { $resultValues[] = $val[0]; } return $resultValues; }
/** * SC_Queryインスタンスに設定された検索条件をもとに対象商品数を取得する. * * 検索条件は, SC_Query::setWhere() 関数で設定しておく必要があります. * * @param SC_Query $objQuery SC_Query インスタンス * @param array $arrVal 検索パラメーターの配列 * @return array 対象商品ID数 */ public function findProductCount(&$objQuery, $arrVal = array()) { $table = <<<__EOS__ dtb_products AS alldtl JOIN dtb_products_class AS P ON P.product_id = alldtl.product_id LEFT JOIN dtb_class AS A ON P.classcategory_id1 = A.class_id LEFT JOIN dtb_class AS B ON P.classcategory_id2 = B.class_id __EOS__; $objQuery->setGroupBy('P.product_id, A.name, B.name'); return $objQuery->get('COUNT(DISTINCT(alldtl.product_id))', $table, '', $arrVal); }
/** 会員別集計 **/ function lfGetOrderMember($type, $sdate, $edate, &$objPage, $graph = true) { list($where, $arrval) = $this->lfGetWhereMember('create_date', $sdate, $edate, $type); // 会員集計の取得 $col = "COUNT(*) AS order_count, SUM(total) AS total, trunc(AVG(total),0) AS total_average, order_sex"; $from = "dtb_order"; $objQuery = new SC_Query(); $objQuery->setGroupBy("order_sex"); $tmp_where = $where . " AND customer_id <> 0 AND del_flg = 0 AND status <> " . ORDER_CANCEL; $arrRet = $objQuery->select($col, $from, $tmp_where, $arrval); // 会員購入であることを記録する。 $max = count($arrRet); for ($i = 0; $i < $max; $i++) { $arrRet[$i]['member_name'] = '会員' . $this->arrSex[$arrRet[$i]['order_sex']]; } $objPage->arrResults = $arrRet; // 非会員集計の取得 $tmp_where = $where . " AND customer_id = 0 AND del_flg = 0 AND status <> " . ORDER_CANCEL; $arrRet = $objQuery->select($col, $from, $tmp_where, $arrval); // 非会員購入であることを記録する。 $max = count($arrRet); for ($i = 0; $i < $max; $i++) { $arrRet[$i]['member_name'] = '非会員' . $this->arrSex[$arrRet[$i]['order_sex']]; } $objPage->arrResults = array_merge($objPage->arrResults, $arrRet); // 円グラフの生成 if ($graph) { $image_key = "member"; $objPage->tpl_image = $this->lfGetGraphPie($objPage->arrResults, "member_name", $image_key, "(売上比率)", $sdate, $edate); } }
/** * SC_Queryインスタンスに設定された検索条件をもとに対象商品数を取得する. * * 検索条件は, SC_Query::setWhere() 関数で設定しておく必要があります. * * @param SC_Query $objQuery SC_Query インスタンス * @param array $arrVal 検索パラメーターの配列 * @return array 対象商品ID数 */ function findProductCount(&$objQuery, $arrVal = array()) { $table = <<<__EOS__ dtb_products AS alldtl JOIN dtb_product_categories AS T2 ON alldtl.product_id = T2.product_id JOIN dtb_category ON T2.category_id = dtb_category.category_id __EOS__; $objQuery->setGroupBy('alldtl.product_id'); $sql_base = $objQuery->getSql('alldtl.product_id', $table); return $objQuery->getOne("SELECT count(*) FROM ( {$sql_base} ) as t", $arrVal); }