Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

problema con sql consultar 3 tablas

Estas en el tema de problema con sql consultar 3 tablas en el foro de Mysql en Foros del Web. Buenas amigos me refirieron para mysql , con mi consulta tengo este codigo para consultar 3 tablas Cita: <?php include('conexion.php'); $cedula=$_GET['cedula']; $query="SELECT i.telefono, i.cedula, p.nombre, ...
  #1 (permalink)  
Antiguo 11/06/2012, 16:14
 
Fecha de Ingreso: junio-2012
Mensajes: 16
Antigüedad: 11 años, 10 meses
Puntos: 0
problema con sql consultar 3 tablas

Buenas amigos me refirieron para mysql , con mi consulta

tengo este codigo para consultar 3 tablas

Cita:
<?php
include('conexion.php');
$cedula=$_GET['cedula'];

$query="SELECT
i.telefono,
i.cedula,
p.nombre,
p.distrito,
c.direccion,
c.salario
FROM
ice AS i
JOIN padron AS p ON i.cedula = p.cedula
JOIN ccss AS c ON p.cedula = c.cedula
WHERE
c.cedula='$cedula' order by nombre asc";
$result= mysql_query($query);

echo "<table id='td' border='1'
bordercolor='#000000'
name='resultado'
cellpadding='0'
cellspacing='0'>
<tr>
<th>TELEFONO</th>
<th>CEDULA</th>
<th>NOMBRE</th>
<th>DISTRITO</th>
<th>DIRECCION</th>
<th>SALARIO</th>
</tr>";
while($fila= mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>".$fila['telefono']."</td>";
echo "<td>".$fila['cedula']."</td>";
echo "<td>".$fila['nombre']."</td>";
echo "<td>".$fila['distrito']."</td>";
echo "<td>".$fila['direccion']."</td>";
echo "<td>".$fila['salario']."</td>";
echo "</tr>";
}
echo "</table>";
?>
el cual es llamado por este form

Cita:
<table align="center" border="2" bordercolor="#000000" cellpadding="0" cellspacing="0">
<tr>
<td><fieldset><br/>
<form id='form' name='form1' action='buscar.php' method='GET' onsubmit='return checkform2(this);'>
"Ingrese-cedula:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input align='middle' type='text' name='cedula' placeholder='Numero id pegado'>
<input type='submit' value='Buscar'></form></fieldset><br/></td>
</tr>

</table>
EL problema esq no me da los datos quiero la informacion de una persona introduciendo su numero de cedula , pero no me da los resultados , me tira la tabla vacia

en el foro de PHP ya me intentaron ayudar , pero aun no lo logro hacer funcionar
  #2 (permalink)  
Antiguo 11/06/2012, 19:17
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: problema con sql consultar 3 tablas

Mira, de todo lo que has puesto, lo único que realmente nos interesa es esto:
Código MySQL:
Ver original
  1.     i.telefono,
  2.     i.cedula,
  3.     p.nombre,
  4.     p.distrito,
  5.     c.direccion,
  6.     c.salario
  7.     ice i
  8.     INNER JOIN padron p ON i.cedula = p.cedula
  9.     INNER JOIN ccss c ON p.cedula = c.cedula
  10.     c.cedula='$cedula'
  11. ORDER BY nombre ASC
Todo el resto es basura, entendiendo por basura cualquier código de programación (lo siento si la expresión te molesta), porque en este foro no se trata de programación y poner código no SQL no está permitido (confunde, ensucia el SQL y esconde los problemas en las variables cuyos valores no podemos ver y por tanto comprobar).

Para código de programación están los otros foros.

Volviendo al tema: Te corregí un poco el código, pero esencialmente está bien. No tiene errores de sintaxis, ni de lógica, y sólo depende del valor que le vayas a poner a la variable.
Ese es el corazón del asunto.
Si una consulta de este tipo no te devuelve datos, sólo puede ser por una razón: No existen registros que cumplan con las condiciones dadas. Tan sencillo como eso.
Ahora bien: ¿Has tenido en cuenta que la cédula que buscas tiene forzosamente que existir en las tres tablas al mismo tiempo, al menos en un registro de cada una?
Porque eso es lo que hace ese JOIN (o INNER JOIN, como yo te puse).
Si hay al menos una de las tres tablas donde esa relación donde no se esté cumpliendo, no te devolverá datos.

Verifica eso primero, y luego veremos. Mientras, postea la estructura de esas tablas (el CREATE TABLE), para asegurarnos de que la relación de los JOIN es consistente en cuanto a tipos de dato.

PD: Por cierto, ¿te aseguraste de que la conexión exista y esté activa, y que la base esté seleccionada, antes de realizar la consulta?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 12/06/2012, 08:58
 
Fecha de Ingreso: junio-2012
Mensajes: 16
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: problema con sql consultar 3 tablas

MUCHAS gracias por tu respuesta gnzsoloyo, y perdon por poner tanto codigo la verdad soy nuevo aqui y no sabia q no era correcto hacerlo , verificando lo que me dijiste
Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿Has tenido en cuenta que la cédula que buscas tiene forzosamente que existir en las tres tablas al mismo tiempo, al menos en un registro de cada una?
Porque eso es lo que hace ese JOIN (o INNER JOIN, como yo te puse).
Si hay al menos una de las tres tablas donde esa relación donde no se esté cumpliendo, no te devolverá datos.

Verifica eso primero, y luego veremos. Mientras, postea la estructura de esas tablas (el CREATE TABLE), para asegurarnos de que la relación de los JOIN es consistente en cuanto a tipos de dato.

PD: Por cierto, ¿te aseguraste de que la conexión exista y esté activa, y que la base esté seleccionada, antes de realizar la consulta?
creo el problema debe estar en que el dato de la cedula ya que es la columna en comun de las 3 tablas pero no esta en todas , ejemplo
la misma cedula esta en las en 2 de las 3 tablas ,
en este caso habria q cambiar los join ?
  #4 (permalink)  
Antiguo 12/06/2012, 09:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: problema con sql consultar 3 tablas

Exacto. Alli ya no sirve el INNER JOIN, sino que debe usarse LEFT JOIN, asegurandose que la tabla a la izquierda sea siempre la que tenga datos. Las otras devolveran NULL donde no haya coincidencias.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 12/06/2012, 09:46
 
Fecha de Ingreso: junio-2012
Mensajes: 16
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: problema con sql consultar 3 tablas

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Exacto. Alli ya no sirve el INNER JOIN, sino que debe usarse LEFT JOIN, asegurandose que la tabla a la izquierda sea siempre la que tenga datos. Las otras devolveran NULL donde no haya coincidencias.
Perfecto amigo muchas gracias por tu ayuda , voy a probar con el LEFT JOIN a ver como me va

Etiquetas: consultar, join, php, select, sql, tabla, tablas
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:30.