簡體   English   中英

如何在表格中顯示基於我的數據庫的結果? MySQL的PHP

[英]How to show in a table results based on my DataBase? Mysql PHP

我的數據庫中有以下3個表:

  • 導體:id_conductor,nombre_conductor
  • Trayectos:id_trayecto,Trayecto,Origen,Destino,Horas_conduccion
  • Viajes:id_viaje,id_conductor,id_trayecto,Salida,Llegada,Horas_conduccion,Disco,Semana

“ 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的當前位置(實際位置),我將這樣做:

$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"];

以此類推。

因此,我想為每個卡車駕駛員自動執行此操作,並覆蓋孔表。

你可以幫幫我嗎? 我有點迷路了。

從導體列表中獲取每個導體的ID,然后將其傳遞給查詢並進行循環。

$result=mysql_query("SELECT Destino FROM trayectos WHERE (SELECT MAX(id_viaje) FROM viajes WHERE id_conductor='.$conductor_id)");

您將需要子查詢和聯接的組合,以將所有這些數據組合成一個查詢。

 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表中檢索max(id_viaje) 然后,我再次連接viajes表以獲取對應的id_trayecto並使用該數據獲取目的地。

第二個子查詢按驅動程序獲取時間摘要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM