PHP - Consulta a dos tablas MySql

   
Vista:
Imágen de perfil de Andres

Consulta a dos tablas MySql

Publicado por Andres (10 intervenciones) el 29/01/2017 20:14:29
Buenas tardes,

Tengo una base de datos llamada "consolidado" con dos tablas una llamada "facturacion" y otra llamada "pedidos" ambas con los mismos campos . Hasta ahora tengo la consulta hecha unicamente a la tabla facturacion. Pero preciso que el resultado de la consulta sea algo similar a esto en una tabla:


resultado consulta tabla "facturacion" datos datos
resultado consulta tabla "pedidos" datos datos
resultado consulta tabla "facturacion" datos datos
resultado consulta tabla "pedidos" datos datos
resultado consulta tabla "facturacion" datos datos
resultado consulta tabla "pedidos" datos datos

Donde me muestre en una fila los resultados de la tabla facturacion y en otra los resultados de la tabla pedidos, todo en una misma tabla.

La consulta que tengo es la siguiente (unicamente a la tabla "facturacion"):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
$where="";
if($_POST['ordencompra'])
	$where.=" OrdenCompra='".$_POST['ordencompra']."' AND";
if($_POST['codboc'])
	$where.=" CodBoc='".$_POST['codboc']."' AND";
if($_POST['fecha'])
	$where.=" Fecha='".$_POST['fecha']."' AND";
if($_POST['comprobante'])
	$where.=" Comprobante='".$_POST['comprobante']."' AND";
 
$sql="SELECT * FROM facturacion";
if($where)
	$sql.=" WHERE ".substr($where,0,-3);
 
$result = mysql_query ($sql);
$numero = 0;
// verificamos que no haya error 
if (mysql_num_rows($result) < 1){
   echo "<b><center><i>No existen pedidos con la informacion solicitada. Por favor revise su consulta y realizela nuevamente.</i></center></b>".mysql_error();
   exit();
}else {
    echo "<div id='content'><table cellspacing='50%'><tr><th class='tg-baqh'>Fecha</th><th>Cliente</th><th>Razon Social</th><th>Comprobante</th><th>Localidad</th><th>Orden de Compra</th><th>GLN</th><th>Direccion</th><th>Cod Boc</th><th>114</th><th>514</th><th>614</th><th>714</th><th>124</th><th>214</th><th>405</th><th>105</th><th>106</th><th>303</th><th>103</th><th>803</th><th>503</th><th>603</th><th>703</th><th>203</th><th>302</th><th>402</th><th>102</th><th>802</th><th>502</th><th>602</th><th>702</th><th>202</th><th>2021</th><th>2011</th><th>1001</th><th>2001</th><th>131</th><th>10200</th><th>531</th><th>631</th>
         </tr>";
//obtenemos los datos resultado de la consulta
while($row = mysql_fetch_array($result))
  {
	echo "<tr><td>".$row["Fecha"]."</td>";
    echo "<td>".$row["Cliente"]."</td>";
    echo "<td>".$row["RazonSocial"]."</td>";
    echo "<td>".$row["Comprobante"]."</td>";
    echo "<td>".$row["Localidad"]."</td>";
    echo "<td>".$row["OrdenCompra"]."</td>";
    echo "<td>".$row["GLN"]."</td>";
    echo "<td>".$row["Direccion"]."</td>";
	echo "<td>".$row["CodBoc"]."</td>";
	echo "<td>".$row["114"]."</td>";
	echo "<td>".$row["514"]."</td>";
	echo "<td>".$row["614"]."</td>";
	echo "<td>".$row["714"]."</td>";
	echo "<td>".$row["124"]."</td>";
	echo "<td>".$row["214"]."</td>";
	echo "<td>".$row["405"]."</td>";
	echo "<td>".$row["105"]."</td>";
	echo "<td>".$row["106"]."</td>";
	echo "<td>".$row["303"]."</td>";
	echo "<td>".$row["103"]."</td>";
	echo "<td>".$row["803"]."</td>";
	echo "<td>".$row["503"]."</td>";
	echo "<td>".$row["603"]."</td>";
	echo "<td>".$row["703"]."</td>";
	echo "<td>".$row["203"]."</td>";
	echo "<td>".$row["302"]."</td>";
	echo "<td>".$row["402"]."</td>";
	echo "<td>".$row["102"]."</td>";
	echo "<td>".$row["802"]."</td>";
	echo "<td>".$row["502"]."</td>";
	echo "<td>".$row["602"]."</td>";
	echo "<td>".$row["702"]."</td>";
	echo "<td>".$row["202"]."</td>";
	echo "<td>".$row["2021"]."</td>";
	echo "<td>".$row["2011"]."</td>";
	echo "<td>".$row["1001"]."</td>";
	echo "<td>".$row["2001"]."</td>";
	echo "<td>".$row["131"]."</td>";
	echo "<td>".$row["10200"]."</td>";
	echo "<td>".$row["531"]."</td>";
    echo "<td>".$row["631"]."</td></tr>";
    }
    echo "</tr></table></div>";
 }
   mysql_free_result($result);
  mysql_close($link);
?>
 </table>


Desde ya muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Consulta a dos tablas MySql

Publicado por Brian (17 intervenciones) el 30/01/2017 12:04:39
Hola, puedes usar UNION ALL.
1
2
3
SELECT campo1,campo2,campo3 FROM facturacion
UNION ALL
SELECT  campo1,campo2,campo3 FROM pedidos;

Los campos deben coincidir su tipo, ej: si el primero de la primer tabla es int el primero de la segunda tabla debe ser int.
Ahi vas a traer las 2 consultas en 1 solo arreglo.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Andres

Consulta a dos tablas MySql

Publicado por Andres (10 intervenciones) el 30/01/2017 12:17:06
Gracias Brian por tu tiempo y respuesta.

Las dos tablas son identicas asi que creo que no voy a tener problema con eso, mi duda es como puedo hacer para traer los resultados de la consulta ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$result = mysql_query ($sql);
$numero = 0;
// verificamos que no haya error 
if (mysql_num_rows($result) < 1){
   echo "<b><center><i>No existen pedidos con la informacion solicitada. Por favor revise su consulta y realizela nuevamente.</i></center></b>".mysql_error();
   exit();
}else {
    echo "<div id='content'><table cellspacing='50%'><tr><th class='tg-baqh'>Fecha</th><th>Cliente</th><th>Razon Social</th><th>Comprobante</th><th>Localidad</th><th>Orden de Compra</th><th>GLN</th><th>Direccion</th><th>Cod Boc</th><th>114</th><th>514</th><th>614</th><th>714</th><th>124</th><th>214</th><th>405</th><th>105</th><th>106</th><th>303</th><th>103</th><th>803</th><th>503</th><th>603</th><th>703</th><th>203</th><th>302</th><th>402</th><th>102</th><th>802</th><th>502</th><th>602</th><th>702</th><th>202</th><th>2021</th><th>2011</th><th>1001</th><th>2001</th><th>131</th><th>10200</th><th>531</th><th>631</th>
         </tr>";
//obtenemos los datos resultado de la consulta
while($row = mysql_fetch_array($result))
  {
	echo "<tr><td>".$row["Fecha"]."</td>"; --------->>> campo fecha tabla facturacion
    echo "<td>".$row2["Fecha"]."</td>"; ---------->>>> campo fecha tabla pedidos

Disculpa si estoy consultando sobre algo muy basico pero recien me inicio en esto del php y estoy muy interesado en aprender del tema.

Desde ya muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta a dos tablas MySql

Publicado por Brian (17 intervenciones) el 30/01/2017 12:18:42
Igual que siempre...

1
2
3
4
5
while($row = mysql_fetch_array($result))
 
  {
echo $row['campo1'];
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Andres

Consulta a dos tablas MySql

Publicado por Andres (10 intervenciones) el 30/01/2017 12:22:06
Y como puedo distinguir entre el resultado de cada tabla? Tendria que agregar dos:

1
2
3
4
5
6
7
while($row = mysql_fetch_array($result))
while($row2 = mysql_fetch_array($result2))
 
  {
echo $row['campo1tabla1'];
echo $row2['campo1tabla2'];
}

Asi seria?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta a dos tablas MySql

Publicado por Brian (17 intervenciones) el 30/01/2017 12:23:52
Si lo queres distinguir tenes que hacer dos consultas diferentes y listo.
No te sirve usar UNION ALL.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Andres

Consulta a dos tablas MySql

Publicado por Andres (10 intervenciones) el 30/01/2017 12:27:01
Ok Brian gracias!

Sls.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres

Consulta a dos tablas MySql

Publicado por Andres (10 intervenciones) el 30/01/2017 23:30:43
Recien regreso de mi trbajo e intente tu solucion pero no logro mostrar la informacion como quiero.

Yo estoy necesitando que con un post me arroje informacion de dos tablas diferentes no se si me puedes ayudar con eso?


Seria algo asi:

Con este Submit de formulario:

1
2
3
4
5
6
7
8
9
$where="";
if($_POST['ordencompra'])
	$where.=" OrdenCompra='".$_POST['ordencompra']."' AND";
if($_POST['codboc'])
	$where.=" CodBoc='".$_POST['codboc']."' AND";
if($_POST['fecha'])
	$where.=" Fecha='".$_POST['fecha']."' AND";
if($_POST['comprobante'])
	$where.=" Comprobante='".$_POST['comprobante']."' AND";

Realice dos consultas, una a la tabla facturacion y otra a la tabla pedidos:

1
2
3
4
5
6
$sql="SELECT * FROM facturacion";
if($where)
	$sql.=" WHERE ".substr($where,0,-3);
$sql="SELECT * FROM pedidos";
if($where)
	$sql.=" WHERE ".substr($where,0,-3);

Al hacer las dos consultas me arroje los resultados consolidados en una tabla ejemplo:

Cantidades pedidas: 10
Cantidades facturadas: 10

Como puedo hacer o que codigo preciso para poder obtener esa informacion?

Desde ya muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar