0

私はこのPHPコードを持っています:

    $sql="SELECT ticket_seq, SUM(TIMEDIFF(timeend, timestart)) as total FROM ticket_updates GROUP BY ticket_seq";
$rs=mysql_query($sql,$conn) or die(mysql_error());
if(mysql_num_rows($rs) > 0)
{
    while($result=mysql_fetch_array($rs))
    {
        $sql2="SELECT * from tickets where ticketnumber = '".$result["ticket_seq"]."' ";
        $rs2=mysql_query($sql2,$conn) or die(mysql_error());
        $result2=mysql_fetch_array($rs2);

        $sql3="SELECT * from customer where sequence = '".$result2["company"]."' ";
        $rs3=mysql_query($sql3,$conn) or die(mysql_error());
        $result3=mysql_fetch_array($rs3);

        if($result["total"] > $result3["support_hours"])
        {
            echo $result3["company"].' - '.$result["total"].'<br>';
        }
    }
}

しかし、 $result["total"] を echo すると、乱数が得られます。

複数の行の timestart と timeend の時間差を選択して合計しようとしています。

4

2 に答える 2

0

このようなものがあなたの問題を解決すると思います

SELECT SUM(
   (SELECT TIMEDIFF(timeend, timestart) FROM ticket_updates GROUP BY ticket_seq)
)
于 2013-03-08T09:31:12.423 に答える
0

クイックプレイとこのようなものがそれを行うかもしれません:-

$sql="SELECT ticket_updates.ticket_seq, customer.company, SUM(CAST((UNIX_TIMESTAMP(timeend) - UNIX_TIMESTAMP(timestart)) AS UNSIGNED)) as total 
    FROM ticket_updates 
    INNER JOIN tickets ON tickets.ticketnumber = ticket_updates.ticket_seq
    INNER JOIN customer ON customer.sequence = tickets.company
    GROUP BY ticket_updates.ticket_seq, customer.company
    HAVING total > (customer.support_hours*60*60)";
$rs=mysql_query($sql,$conn) or die(mysql_error());
if(mysql_num_rows($rs) > 0)
{
    while($result=mysql_fetch_array($rs))
    {
            echo $result3["company"].' - '.$result["total"].'<br>';
    }
}

これは、日付/時刻フィールドを UNIX タイムスタンプに変換し、違いを見つけて unsigned にキャストし、サポート時間に 60 と 60 を掛けた値 (つまり、時間から秒への変換) と照合します。

于 2013-03-08T10:14:20.543 に答える