/**
     * 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);
     }
 }
Exemple #4
0
    /**
     * 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);
    }