Combinando los resultados de dos consultas MySQL separadas

Estoy tratando de hacer dos bases de datos separadas y devolver los resultados a un formulario. Cada resultado se escribe en una tabla.

Quiero poder combinar las dos consultas en una y ordenar los resultados por número de tarea.

PRIMERA CONSULTA:

//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); 

SEGUNDA CONSULTA:

 //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); 

Los resultados se envían a la página a través de una instrucción 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 '"; echo "". $time . ""; // Time Frame echo "". $Unregisted.""; // Pickup echo "". $Rego.""; // Unregisted echo "".$row["PickupLocation"] . ""; // Rego echo "".$row["DropOffLocation"] . ""; // Delivery $i=$i+1;//Control Set } echo''; 

Repito este mismo código de salida para los resultados de la reserva de devolución.

¿Es posible combinar ambas consultas en una sola para que el conjunto de resultados de ambas tablas pueda ser ordenado por ASC y enviado por la sentencia while anterior?

Esta es una de las muchas razones para evitar Select * . Simplemente puede usar un sindicato

 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 

En esta solución, debe enumerar las columnas y asegurarse de que el tipo de las columnas, en el orden en que se enumeran en las dos cláusulas Select, sean idénticas.

Por lo que puedo decir, tienes tres opciones para lograr lo que buscas.

Podría usar una combinación, suponiendo que las dos tablas tienen una clave externa.

Podría usar una unión para anexar los dos conjuntos de resultados.

Puede generar ambas consultas en una matriz e iterar a través de esa matriz para su salida. Esto es probablemente menos eficiente que una unión, pero te da una mayor separación entre los dos conjuntos de resultados.

El uso de varias tablas más pequeñas mantiene sus datos organizados y garantiza que los nombres de las columnas sean los mismos.

Si tenemos, por ejemplo, una empresa con muchos clientes, y en la que los clientes pueden ser clientes o empresas privados, usando una tabla separada para esas direcciones y 2 tablas de referencia con client_id y adres_id o company_id y adres_id, las direcciones siempre tendrán el los mismos nombres de columna

No solo eso, pero si cierta información es limitada, no corre el riesgo de almacenar espacio vacío …

Al final, debe apegarse a SQL para obtener TODA la información que necesita de una vez y usar PHP (u otras secuencias de comandos del lado del servidor) para formatear esta información al usuario. No es un gran problema para un sitio web interno o privado, pero cuando tienes más usuarios querrás limitar la cantidad y el tamaño de tus transferencias de datos.

Usar solo 1 consulta larga es a menudo mejor que varios más pequeños.