dongliao2011 2018-07-10 01:34
浏览 53

将多个sqlsrv_queries压缩为一个函数

I have this couple queries, I am looking to making it run faster by creating a function like this. What would be the best way to do this? The queries find the tickets in the database that have been maintained

public function __select(){}

Below are the queries:

 $data = array();
    if($My_Privileges['User_Privilege'] >= 4 && $My_Privileges['Group_Privilege'] >= 4 && $My_Privileges['Other_Privilege'] >= 4){
        $Tickets = array();
        $r = sqlsrv_query($NEI,"
                SELECT   Elev.ID AS ID
                FROM     nei.dbo.Elev 
                         LEFT JOIN nei.dbo.Loc ON Elev.Loc = Loc.Loc
                WHERE    Elev.Status = 0
                         AND Loc.Maint = 1
                GROUP BY Elev.ID

        ;");
        $data2 = array();
        if($r){while($array = sqlsrv_fetch_array($r)){$data2[$array['ID']] = $array;}}
        $sql = array();
        foreach($data2 as $key=>$variable){$sql[] = "Elev.ID = '{$variable['ID']}'";}
        $sql = implode(" OR ",$sql);
        $r = sqlsrv_query($NEI,"
                SELECT   Max(TicketD.EDate) AS Last_Date,
                         Elev.ID            AS ID
                FROM     nei.dbo.TicketD 
                         LEFT JOIN nei.dbo.Elev ON TicketD.Elev = Elev.ID
                         LEFT JOIN nei.dbo.Job  ON TicketD.Job  = Job.ID
                WHERE    Job.Type = 0
                         AND ({$sql})
                GROUP BY Elev.ID

        ;");
        if($r){
            while($array = sqlsrv_fetch_array($r,SQLSRV_FETCH_ASSOC)){
                if(isset($data2[$array['ID']])){
                    $data2[$array['ID']]['Last_Date'] = $array['Last_Date'];
                }
            }
        }
        $r = sqlsrv_query($NEI,"
            SELECT Elev.ID                     AS ID,
                   Elev.State                  AS State, 
                   Elev.Unit                   AS Unit,
                   Elev.Type                   AS Type,
                   Loc.Tag                     AS Location,
                   Zone.Name                   AS Zone,
                   Emp.fFirst + ' ' + Emp.Last AS Route
            FROM   nei.dbo.Elev
                   LEFT JOIN nei.dbo.Loc   ON Elev.Loc   = Loc.Loc
                   LEFT JOIN nei.dbo.Zone  ON Loc.Zone   = Zone.ID
                   LEFT JOIN nei.dbo.Route ON Loc.Route  = Route.ID
                   LEFT JOIN nei.dbo.Emp   ON Route.Mech = Emp.fWork
            WHERE  Loc.Maint = 1
                   AND ({$sql})
        ;");
        if($r){
            while($array = sqlsrv_fetch_array($r,SQLSRV_FETCH_ASSOC)){
                $array['Last_Date'] = substr($data2[$array['ID']]['Last_Date'],0,10);
                $data[] = $array;
            }
        }
    }

In another PHP file, I am creating a function called __select() and I have been trying to figure out the best way to condense the queries and make the website run faster. Any help would be appreciated.

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 关于#hadoop#的问题
    • ¥15 (标签-Python|关键词-socket)
    • ¥15 keil里为什么main.c定义的函数在it.c调用不了
    • ¥50 切换TabTip键盘的输入法
    • ¥15 可否在不同线程中调用封装数据库操作的类
    • ¥15 微带串馈天线阵列每个阵元宽度计算
    • ¥15 keil的map文件中Image component sizes各项意思
    • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
    • ¥15 划分vlan后,链路不通了?
    • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据