Foros del Web » Programando para Internet » PHP »

Hacer consulta a dos tablas al mismo tiempo con datos diferentes

Estas en el tema de Hacer consulta a dos tablas al mismo tiempo con datos diferentes en el foro de PHP en Foros del Web. Muchas gracias a todos por sus respuestas tan pronas y efectivas. lo que necesito ahora y no he podido hacer es una consulta a dos ...
  #1 (permalink)  
Antiguo 13/12/2008, 19:03
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.416
Antigüedad: 18 años, 7 meses
Puntos: 20
Hacer consulta a dos tablas al mismo tiempo con datos diferentes

Muchas gracias a todos por sus respuestas tan pronas y efectivas.

lo que necesito ahora y no he podido hacer es una consulta a dos tablas al mismo tiempo.

es decir tengo dos datos a consultar en tablas diferentes y necesito ponerlos en la misma pantalla donde imprimo resultados

lo que tengo es esto

Código:
<?php 
$mysql_id = mysql_connect('localhost', 'root', 'buckdich');
mysql_select_db('extractos', $mysql_id);
$placa=$_GET['placa'];
$empresa=$_GET['empresa'];
$sql="SELECT * FROM viaje WHERE vehiculo = '".$placa."' AND SELECT * FROM contratante WHERE Empresa = '".$empresa."'";

$resultado = mysql_query($sql) or die( mysql_error());

while ( $row = mysql_fetch_assoc($resultado))
{
$fecha_salida = strtotime($row['fecha_salida']);
$feha_regreso = strtotime($row['fecha_regreso']);
 
echo '<table>';
echo   '<tr><td>' .$row['origen']. '</td></tr>';
echo   '<tr><td>' .$row['destino']. '</td></tr>';
echo   '<tr><td>' .date("d-m-Y", $fecha_salida). '</td></tr>';
echo   '<tr><td>' .date("d-m-Y", $fecha_regreso). '</td></tr>';

}

?>
pero no me da


a ver si me explico mejor:


el usuario ingresa dos datos que son vehiculo y contratante

vehiculo consulta en la tabla vehiculo y trae unos datos (esto funka bien) pero necesito que al mismo tiempo contratante consulte en la tabla contratante y me traiga resultados.
__________________
Say no more.......
  #2 (permalink)  
Antiguo 13/12/2008, 19:08
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 11 años, 6 meses
Puntos: 416
Respuesta: Hacer consulta a dos tablas al mismo tiempo con datos diferentes

No puedes unir dos consultas MySQL usando AND, tienes que usar UNION.

Si las consultas tienen alguna relacion, usa INNER JOIN de MySQL,
de lo contrario, haz dos consultas separadas.
  #3 (permalink)  
Antiguo 13/12/2008, 19:11
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.416
Antigüedad: 18 años, 7 meses
Puntos: 20
Respuesta: Hacer consulta a dos tablas al mismo tiempo con datos diferentes

intente hacerlo con dos consultas separadas porque entre si las tablas no tienen relacion, pero el problema es a la hora de mostrar el resultado porque lo que hice fue
Código:
$sql="SELECT * FROM viaje WHERE vehiculo = '".$placa."'";
$sql2="SELECT * FROM contratante WHERE contratante = '".$empresa."'";
$resultado = mysql_query($sql) or die( mysql_error());
$resultado2 = mysql_query($sql2) or die(mysql_error());

while ( $row = mysql_fetch_assoc($resultado, $resultado2))
{
pero no me dio
__________________
Say no more.......
  #4 (permalink)  
Antiguo 13/12/2008, 19:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 7 meses
Puntos: 2135
Respuesta: Hacer consulta a dos tablas al mismo tiempo con datos diferentes

Obviamente no te va a servir asi, en dado caso si quieres hacer eso, vas a tener que descargar los resultados por aparte dentro del while.
Código php:
Ver original
  1. while( $row = mysql_fetch_assoc($resultado)) {
  2.        $row2 = mysql_fetch_assoc($resultado2);
  3. }

Saludos.
  #5 (permalink)  
Antiguo 13/12/2008, 19:15
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 11 años, 6 meses
Puntos: 416
Respuesta: Hacer consulta a dos tablas al mismo tiempo con datos diferentes

Código PHP:
mysql_fetch_assoc($resultado$resultado2
O_O Pero, si eso no existe.

Código PHP:
<?php
while($row mysql_fetch_assoc($resultado) && $row2 mysql_fetch_assoc($resultado2)) {
  
//accion
}
?>
http://php.net/
http://www.php.net/manual/es/functio...etch-assoc.php
  #6 (permalink)  
Antiguo 13/12/2008, 19:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 7 meses
Puntos: 2135
Respuesta: Hacer consulta a dos tablas al mismo tiempo con datos diferentes

Lamentablemente con esa forma Ronruby, sobreescribiras el primer $row, por eso tiene que ser de la forma que le expuse .

Saludos.
  #7 (permalink)  
Antiguo 13/12/2008, 19:28
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.416
Antigüedad: 18 años, 7 meses
Puntos: 20
Respuesta: Hacer consulta a dos tablas al mismo tiempo con datos diferentes

funciona casi perfecto porque ya me muestra los datos de las dos tablas pero de la primera no me muestra unos

Código:
<?php 
$mysql_id = mysql_connect('localhost', 'root', 'buckdich');
mysql_select_db('extractos', $mysql_id);
$placa=$_GET['placa'];
$empresa=$_GET['empresa'];
$sql="SELECT * FROM viaje WHERE vehiculo = '".$placa."'";
$sql2="SELECT * FROM contratante WHERE cedula_nit = '".$empresa."'";
$resultado = mysql_query($sql) or die( mysql_error());
$resultado2 = mysql_query($sql2) or die( mysql_error());

while ( $row = mysql_fetch_assoc($resultado) && $row2 = mysql_fetch_assoc($resultado2))
{
$fecha_salida = strtotime($row['fecha_salida']);
$feha_regreso = strtotime($row['fecha_regreso']);
 
echo '<table>';
echo   '<tr><td>' .$row['origen']. '</td></tr>';
echo   '<tr><td>' .$row['destino']. '</td></tr>';
echo   '<tr><td>' .date("d-m-Y", $fecha_salida). '</td></tr>';
echo   '<tr><td>' .date("d-m-Y", $fecha_regreso). '</td></tr>';
echo   '<tr><td>' .$row2['Empresa']. '</td></tr>';   

}

?>

estos son los que no me muestra
Código:
echo   '<tr><td>' .$row['origen']. '</td></tr>';
echo   '<tr><td>' .$row['destino']. '</td></tr>';
__________________
Say no more.......
  #8 (permalink)  
Antiguo 13/12/2008, 19:33
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 11 años, 6 meses
Puntos: 416
Respuesta: Hacer consulta a dos tablas al mismo tiempo con datos diferentes

Intentalo con el metodo de GatorV, al parecer no funciona como te dije anteriormente:

Código PHP:
while( $row mysql_fetch_assoc($resultado)) {
       
$row2 mysql_fetch_assoc($resultado2);

PD: Gracias por el dato GatorV.
  #9 (permalink)  
Antiguo 13/12/2008, 19:37
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.416
Antigüedad: 18 años, 7 meses
Puntos: 20
perfecto

el script quedo asi por si alguien lo necesita
Código:
<?php 
$mysql_id = mysql_connect('localhost', 'root', 'pss');
mysql_select_db('extractos', $mysql_id);
$placa=$_GET['placa'];
$empresa=$_GET['empresa'];
$sql="SELECT * FROM viaje WHERE vehiculo = '".$placa."'";
$sql2="SELECT * FROM contratante WHERE cedula_nit = '".$empresa."'";
$resultado = mysql_query($sql) or die( mysql_error());
$resultado2 = mysql_query($sql2) or die( mysql_error());

while( $row = mysql_fetch_assoc($resultado)) {
       $row2 = mysql_fetch_assoc($resultado2);
  
$fecha_salida = strtotime($row['fecha_salida']);
$feha_regreso = strtotime($row['fecha_regreso']);
 
echo '<table>';
echo   '<tr><td>' .$row['origen']. '</td></tr>';
echo   '<tr><td>' .$row['destino']. '</td></tr>';
echo   '<tr><td>' .date("d-m-Y", $fecha_salida). '</td></tr>';
echo   '<tr><td>' .date("d-m-Y", $fecha_regreso). '</td></tr>';
echo   '<tr><td>' .$row2['Empresa']. '</td></tr>';   

}

?>
y lo mejor de todo si alguien lo necesita con 3 o mas consultas funciona perfecto aqui esta el script con 3 consultas

Código:
<?php 
$mysql_id = mysql_connect('localhost', 'root', 'buckdich');
mysql_select_db('extractos', $mysql_id);


$placa=$_GET['placa'];
$empresa=$_GET['empresa'];


$sql="SELECT * FROM viaje WHERE vehiculo = '".$placa."'";
$sql2="SELECT * FROM contratante WHERE cedula_nit = '".$empresa."'";

$sql3="SELECT * FROM vehiculo WHERE placa = '".$placa."'";


$resultado = mysql_query($sql) or die( mysql_error());
$resultado2 = mysql_query($sql2) or die( mysql_error());
$resultado3 = mysql_query($sql3) or die ( mysql_error());



while( $row = mysql_fetch_assoc($resultado)) {
       $row2 = mysql_fetch_assoc($resultado2);
       $row3 = mysql_fetch_assoc($resultado3);
  
$fecha_salida = strtotime($row['fecha_salida']);
$feha_regreso = strtotime($row['fecha_regreso']);
 

echo '<table>';
echo   '<tr><td>' .$row['origen']. '</td></tr>';
echo   '<tr><td>' .$row['destino']. '</td></tr>';
echo   '<tr><td>' .date("d-m-Y", $fecha_salida). '</td></tr>';
echo   '<tr><td>' .date("d-m-Y", $fecha_regreso). '</td></tr>';
echo   '<tr><td>' .$row2['Empresa']. '</td></tr>';   
echo   '<tr><td>' .$row3['placa']. '</td></tr>';
echo   '<tr><td>' .$row3['modelo']. '</td></tr>';
echo   '<tr><td>' .$row3['tarjeta_operacion']. '</td></tr>';
echo   '<tr><td>' .$row3['marca']. '</td></tr>';
echo   '<tr><td>' .$row3['no_interno']. '</td></tr>';
echo   '<tr><td>' .$row3['vencimiento_t_o']. '</td></tr>';

}

?>
todo gracias a Ronruby y GatorV
__________________
Say no more.......

Última edición por GatorV; 13/12/2008 a las 20:09
  #10 (permalink)  
Antiguo 13/12/2008, 20:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 7 meses
Puntos: 2135
Respuesta: Hacer consulta a dos tablas al mismo tiempo con datos diferentes

Aunque "funciona" no es la mejor forma de hacerlo ya que tus datos no tienen coherencia ni nada, lo mejor es que uses JOINS.

Investiga que son y como usarlos.

Saludos.
  #11 (permalink)  
Antiguo 13/12/2008, 20:13
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.416
Antigüedad: 18 años, 7 meses
Puntos: 20
Respuesta: Hacer consulta a dos tablas al mismo tiempo con datos diferentes

ok, pero a que te refieres con coherencia, a relacionamiento?
__________________
Say no more.......
  #12 (permalink)  
Antiguo 13/12/2008, 20:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 7 meses
Puntos: 2135
Respuesta: Hacer consulta a dos tablas al mismo tiempo con datos diferentes

Pues que si un dato cambia de posicion en tu tabla, como garantizas que sea el mismo dato si no lo estas relacionando de ninguna forma.

Por eso si no conoces es que te invito a que leas un poco de Bases de datos relacionales, que es precisamente lo que estas usando.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 16:00.