我试图做两个单独的数据库查询,并将结果返回到表单。每个结果都被写入到一个表中。
我希望能够将两个查询合并为一个,并按任务编号对结果排序。
第一个查询:
//Booking
$Date= date("d/m/Y");
$driver = $_SESSION['username'];
$dbTaskRecords = "SELECT * FROM booking WHERE driver='$driver' AND Date= CAST('$Date_search' AS DATE) ORDER BY TaskNo ASC";
$dbTaskRecords_result = mysql_query($dbTaskRecords);
第二个查询:
//Return Booking
$dbTaskReturn = "SELECT * FROM returnbooking WHERE driver='$driver' AND Date= CAST('$Date_search' AS DATE) ORDER BY TaskNo ASC";
$dbTaskReturn_result = mysql_query($dbTaskReturn);
然后通过while语句将结果输出到页面。$i=0;
while ($row = mysql_fetch_array($dbTaskRecords_result)){
//Control Structure for Move Time on first Job of day
if ($i==0 ){
$time = $row["Time"];
//$time = 'N/A';
}else{
$time = 'N/A';
}
//Get Rego from trucks table
$truckID = $row["TruckID"];
$Rego_select = mysql_query("SELECT VechicleRegistration FROM trucks WHERE TruckID = '$truckID'" )
or die("Problem reading table: " . mysql_error());
$Rego = mysql_result($Rego_select,0);
//Get unregisted from trucks table
$Unregisted_select = mysql_query("SELECT Unregistered FROM trucks WHERE TruckID = '$truckID'" )
or die("Problem reading table: " . mysql_error());
$Unregisted = mysql_result($Unregisted_select,0);
$id_note = $row["BookingID"];
echo '<td><a href="taskpage.php?id='.$id_note.'"><button>'. $row['TaskNo']."</button><a/></td>";
echo "<td>". $time . "</td>"; // Time Frame
echo "<td>". $Unregisted."</td>"; // Pickup
echo "<td>". $Rego."</td>"; // Unregisted
echo "<td>".$row["PickupLocation"] . "</td>"; // Rego
echo "<td>".$row["DropOffLocation"] . "</td></tr>"; // Delivery
$i=$i+1;//Control Set
}
echo'</tr>';
对于返回预订的结果,我重复相同的输出代码。
是否有可能将两个查询合并为一个,以便两个表的结果集可以由ASC排序并由上面的while语句输出
这是避免使用Select *
的众多原因之一。您可以简单地使用联合
Select Time, TruckId, TaskNo, PickupLocation, DropOffLocation
From booking
Where driver='$driver'
And Date= CAST('$Date_search' AS DATE)
Union All
Select Time, TruckId, TaskNo, PickupLocation, DropOffLocation
From returnbooking
WHERE driver='$driver'
And Date= CAST('$Date_search' AS DATE)
Order By TaskNo Asc
在此解决方案中,您需要枚举列,并确保列的类型按照两个Select子句中枚举列的顺序相同。
据我所知,你有三个选择来完成你所追求的。
可以使用连接,假设两个表有一个外键。
您可以使用联合来附加两个结果集。
您可以将这两个查询输出到一个数组中,并遍历该数组以获得输出。这可能比联合效率低,但可以更好地分隔两个结果集。
使用多个较小的表可以保持数据的组织,并确保列名相同。
如果我们有一个公司有一堆客户,其中客户可能是私人客户或公司,使用一个单独的表和两个引用表的client_id和adres_id或company_id和adres_id,地址将始终具有相同的列名
不仅如此,如果某些信息是有限的,您就不会冒存储空白空间的风险…
最后,您应该坚持使用SQL一次性获取所需的所有数据,并使用PHP(或其他服务器端脚本)将这些数据格式化给用户。对于内部或私人网站来说,这不是什么大问题,但是当你有更多的用户时,你会想要限制数据传输的数量和大小。