我的数据库中有这3个表:
表" Viajes"我每天都会插入卡车司机(指挥)的行程,我想在这样的表格中计算每个卡车司机的行车时间和休息时间:
我必须构建此表的代码如下:
The connection to the data base obviously...
<?php
echo "<table border='1'>";
echo "<tr>";
echo "<td><b>Conductor</b></td>";
echo "<td><b>Posicion Actual</b></td>";
// (etc.........)
echo "<td><b>Descansos 11 H.</b></td>";
echo "</tr>";
$sql="SELECT * FROM conductores ";
$resultado=mysql_query($sql);
while($row=mysql_fetch_array($resultado)){
echo "<tr>";
echo "<td valign='top'>" . nl2br($row["nombre_conductor"]) . "</td>";
echo "<td></td>";
// (etc.........)
echo "</tr>";
}
我知道如何计算列但仅针对一个卡车司机,例如,如果我想要驱动程序1的当前位置(Posicion Actual),我会这样做:
$result=mysql_query("SELECT Destino FROM trayectos WHERE (SELECT MAX(id_viaje) FROM viajes WHERE id_conductor=1)");
$row = mysql_fetch_array($result, MYSQL_ASSOC);
echo "Posición Actual = " . $row["Destino"];
上周开车时间:
$result = mysql_query("SELECT SEC_TO_TIME (SUM( TIME_TO_SEC(Horas_conduccion))) as total FROM viajes WHERE id_conductor=1 AND semana=week(curdate())-1");
$row = mysql_fetch_array($result, MYSQL_ASSOC);
echo "horas semana anterior = " . $row["total"];
等等。
所以我想为每个卡车司机自动完成,并覆盖孔洞。
你可以帮帮我吗?我有点迷失了。答案 0 :(得分:0)
从导体列表中获取每个导体的ID,然后将其传递给查询并循环。
$result=mysql_query("SELECT Destino FROM trayectos WHERE (SELECT MAX(id_viaje) FROM viajes WHERE id_conductor='.$conductor_id)");
答案 1 :(得分:0)
您需要子查询和联接的组合才能将所有这些数据合并到一个查询中。
SELECT c.*, t1.maxid, tr.Destino, t2.total FROM conductores c
LEFT JOIN (SELECT id_conductor, MAX(id_viaje) maxid FROM viajes GROUP BY id_conductor) t1 on c.id_conductor = t1.id_conductor
LEFT JOIN viajes v on t1.maxid=v.id_viaje
LEFT JOIN trayectos tr on tr.id_trayecto = v.id_trayecto
LEFT JOIN (SELECT id_conductor, SEC_TO_TIME (SUM( TIME_TO_SEC(Horas_conduccion))) as total
FROM viajes
GROUP BY id_conductor
WHERE semana=week(curdate())-1) t2 on c.id_conductor=t2.id_conductor
第一个子查询按驱动程序从max(id_viaje)
表中检索viajes
。然后我再次加入viajes
表以获取相应的id_trayecto
并使用该数据来获取目的地。
第二个子查询通过驱动程序获取时间摘要。