php原生查询优化

一、php原生查询优化

    // 井不为空时
        if ($productId != '') {
            $data = $this->getQueryStatement($productId, $m_intSTime, $m_intETime)['query1'];
            return $this->getCommonValue($data);
            // 井为空时
        } elseif ($productId == '') {
            $data = $this->getQueryStatement($productId, $m_intSTime, $m_intETime)['query2'];
            return $this->getCommonValue($data);
        }
    }

    // 查询语句
    private function getQueryStatement($productId, $m_intSTime, $m_intETime)
    {
        // 第一个查询语句
        $query1 = "SELECT
            a.SERIAL,
            a.COMMANDID,
            a.CELLID,
            a.USERID,
            a.LIBTIME,
            a.[RETURN],
            a.VALUE,
            a.USERALIAS,
            (SELECT NAME FROM system_index WHERE ID = a.CELLID) AS NAME
          FROM
            system_command AS a
          WHERE
            a.CELLID IN (SELECT ID FROM system_index WHERE PARENTID = '{$productId}')
            AND a.LIBTIME BETWEEN '{$m_intSTime}' AND '{$m_intETime}'";
        // 第二个查询语句
        $query2 = "SELECT  
            a.SERIAL, 
            a.COMMANDID, 
            a.CELLID, 
            a.USERID,
            a.LIBTIME, 
            a.[RETURN],
            a.VALUE,
            a.USERALIAS,
            b.NAME
            FROM system_command AS a 
            JOIN system_index AS b ON a.CELLID = b.ID
            WHERE a.LIBTIME BETWEEN '{$m_intSTime}' AND '{$m_intETime}'";

        // 返回查询语句
        // 可以使用数组或其他适合的数据结构返回多个语句
        return ['query1' => $query1, 'query2' => $query2];
    }


    // 公共部分
    private function getCommonValue($data)
    {
        $daRet = $this->da->GetDataTable($data);
        if ($daRet->strState == '') {
            $arrID = $daRet->Data->fetchAll(PDO::FETCH_ASSOC);
        }
        // 获取到油井的名称
        for ($j = 0; $j < count($arrID); $j++) {
            $getOilValue = "select ID,Name,PARENTID,TYPE from system_index where ID = '{$arrID[$j]['CELLID']}'";
            $oilData = $this->da->GetDataTable($getOilValue);
            if ($oilData->strState == '') {
                $oilData = $oilData->Data->fetchAll(PDO::FETCH_ASSOC);
            }
            if ($oilData[0]['TYPE'] === '59') { // 井
                $arrID[$j]['parent'] = $oilData['0']['name'];
            } else { // 属性
                // 查找到它的上级
                $getOilLevel = "select ID,Name as Parent,TYPE from system_index where ID = '{$oilData[0]['PARENTID']}'";
                $oilLevel = $this->da->GetDataTable($getOilLevel);
                if ($oilLevel->strState == '') {
                    $oilLevel = $oilLevel->Data->fetchAll(PDO::FETCH_ASSOC);
                }
                $arrID[$j]['parent'] = $oilLevel[0]['Parent'];
            }
        }
        return json_encode($arrID);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骨子里的偏爱

上传不易,还请多多支持。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值