Foros del Web » Programando para Internet » PHP »

Relacionar dos tablas.

Estas en el tema de Relacionar dos tablas. en el foro de PHP en Foros del Web. Hola. Tengo un problema, quiero relacionar 2 tablas y mostrarlas en una lista desplegable, pero llegué a un punto en el que no logro encontrar ...
  #1 (permalink)  
Antiguo 24/07/2009, 11:03
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 15 años, 5 meses
Puntos: 1
Relacionar dos tablas.

Hola.

Tengo un problema, quiero relacionar 2 tablas y mostrarlas en una lista desplegable, pero llegué a un punto en el que no logro encontrar la respuesta, primero que nada les pongo un ejemplo de las tablas:

Código PHP:
Tablatabla1

id     descrip                    
(campos)

25    descrip25                (valores)
20    descrip20
15    descrip15 
Código PHP:
Tablatabla2

id     llave                    
(campos)

25    8596                   (valores)
20    8596
15    0002 
Bueno supongamos que aquí la llave que yo tengo es '8596', entonces me debe tomar los valores 25, y 20; y móstrarlos en la lista desplegable con éste código:

Código PHP:
<?php
  $query_Recordset 
"SELECT llave,id FROM tabla2 WHERE llave = '".$llave."'";
$Recordset mysql_query($query_Recordset$conex) or die(mysql_error());
$row_Recordset mysql_fetch_assoc($Recordset);

do{
 
?>
<option value="<?php echo $row_Recordset['llav']; ?>"><?php echo $row_Recordset['id'];?> </option>
<?php }while($row_Recordsetmysql_fetch_assoc($Recordset)); ?>
Hasta ahí todo bien porque sólo estoy mostrando el id, pero cuando lo quiero relacionar con 'tabla1' para que me muestre las descripciones, hice algo así:

Código PHP:
<?php
  $query_Recordset 
"SELECT llave,id FROM tabla2 WHERE llave = '".$llave."'";
$Recordset mysql_query($query_Recordset$conex) or die(mysql_error());
$row_Recordset mysql_fetch_assoc($Recordset);

  
$query_Recordset1 "SELECT id,descrip FROM tabla1 WHERE id = '".$row_Recordset['id']."'";
$Recordset1 mysql_query($query_Recordset1$conex) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);

do{
 
?>
<option value="<?php echo $row_Recordset1['id']; ?>"><?php echo $row_Recordset1['descrip'];?> </option>
<?php }while($row_Recordsetmysql_fetch_assoc($Recordset)); ?>
Ahí en vez de mostrarme 'descrip25' y 'descrip20', sólo me muestra 'descrip25', ¿cómo podría editar el código para que me mostrara ambos, osea los que coincidan con el 'id' de la 'tabla1'?

Espero puedan ayudarme, gracias de antemano.

Saludos.

Última edición por Gaug; 24/07/2009 a las 11:22
  #2 (permalink)  
Antiguo 24/07/2009, 11:17
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: Relacionar dos tablas.

Va para largo, un error está en la2º consulta para obtener descripcion.
porque dices
SELECT id,descrip FROM tabla2 WHER...
pero descripcion es de tabla1 , no de tabla2
__________________
I am Doyle please insert code.
  #3 (permalink)  
Antiguo 24/07/2009, 11:19
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Relacionar dos tablas.

Error de dedo hehe, ése no sería el error.

Saludos.
  #4 (permalink)  
Antiguo 24/07/2009, 11:31
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: Relacionar dos tablas.

la 1º consulta trae 2 registros
id(25,20)

Con mysql_fetch_assoc accedes al 1º registro y queda almacenado en $row_Recordset, por lo tanto poseerá solo el 1º registro(25) el cual se lo pasa a la 2º consulta, por eso te traerá
solo un registro de la tabla1 (descrp25)
__________________
I am Doyle please insert code.
  #5 (permalink)  
Antiguo 24/07/2009, 11:41
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Relacionar dos tablas.

¿Qué puedo hacer al respecto entonces?

Saludos.
  #6 (permalink)  
Antiguo 24/07/2009, 11:51
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: Relacionar dos tablas.

Con una sola consulta debes obtener todas las descripciones de una llave dada:
Intenta esto.
Código PHP:
SELECT tabla1.id,tabla2.id AS Id,tabla.descrip
FROM tabla1
,tabla2
WHERE tabla2
.llave=$llave
AND tabla2.id=tabla1.id 
Luego usa un while para mostrar el id y la descripcion
Código PHP:
{// en las options...
echo $row_Recordset['Id'];
echo 
$row_Recordset['descrip'];

__________________
I am Doyle please insert code.
  #7 (permalink)  
Antiguo 24/07/2009, 12:08
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Relacionar dos tablas.

Eso puse, pero sigo en las mismas, me quedó duda con el 'AS' el 'Id' ¿de qué tabla es, y eso de 'tabla' también que tabla sería?

Saludos.
  #8 (permalink)  
Antiguo 24/07/2009, 12:20
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: Relacionar dos tablas.

Como tienes 2 campos con mismo nombre en 2 tablas, para evitar ambiguedad y que el sql sepa a cual campo haces referencia, usas las sintaxis:
nombreDeTabla.nombreDeCampo
en tu caso tabla1.id
y para el otro id
tabla2.id

AS Id
es utilizar un alias de sql, a "X" campo le das un alias que luego podras usar para mostrar un valor
en este caso el alias Id tiene el valor del campo tabla2.id
__________________
I am Doyle please insert code.
  #9 (permalink)  
Antiguo 24/07/2009, 12:26
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Relacionar dos tablas.

Ah ok ya entendí, si funciona, pero sólo si son 1 o 2 los que son iguales, ¿cómo hacer para que funcione con más?

Gracias de antemano, saludos.
  #10 (permalink)  
Antiguo 24/07/2009, 12:30
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: Relacionar dos tablas.

?¿?¿?Si esta dentro de un bucle mostrará todas las descripciones a partir de la llave dada.
Como quedo el codigo?
__________________
I am Doyle please insert code.
  #11 (permalink)  
Antiguo 24/07/2009, 12:34
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Relacionar dos tablas.

Así:

Código PHP:
<?php
  $query_Recordset 
"SELECT tabla1.id,tabla2.id AS Id,tabla1.descrip FROM tabla1,tabla2 WHERE tabla2.llave= '".$llave."' AND tabla2.id=tabla1.id ";
$Recordset mysql_query($query_Recordset$conex) or die(mysql_error());
$row_Recordset mysql_fetch_assoc($Recordset);
$totalRows_Recordset mysql_num_rows($Recordset);


do{
 
?>
<option value="<?php echo $row_Recordset['id']; ?>"><?php echo $row_Recordset['descrip'];?> </option>
<?php }while($row_Recordsetmysql_fetch_assoc($Recordset)); ?>

</select>
  #12 (permalink)  
Antiguo 24/07/2009, 12:43
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: Relacionar dos tablas.

El problema esta en el momento que utilizas mysql_fetch_assoc
<?php
$query_Recordset = "SELECT tabla1.id,tabla2.id AS Id,tabla1.descrip FROM tabla1,tabla2 WHERE tabla2.llave= '".$llave."' AND tabla2.id=tabla1.id ";
$Recordset = mysql_query($query_Recordset, $conex) or die(mysql_error());

$totalRows_Recordset = mysql_num_rows($Recordset);


while($row_Recordset= mysql_fetch_assoc($Recordset)); { ?>
<option value="<?php echo $row_Recordset['id']; ?>"><?php echo $row_Recordset['descrip'];?> </option>
<?php }?>
pruebalo porque hice copy/paste
__________________
I am Doyle please insert code.
  #13 (permalink)  
Antiguo 24/07/2009, 12:50
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Relacionar dos tablas.

Ahora no muestra nada, ¿qué podría ser?

Pego el código completo:

Código PHP:
<?php
  $query_Recordset 
"SELECT tabla1.id,tabla2.id AS ID,tabla1.descrip FROM tabla1,tabla2 WHERE tabla2.llave= '".$llave."' AND tabla2.id=tabla1.id ";
$Recordset mysql_query($query_Recordset$conex) or die(mysql_error());
$totalRows_Recordset mysql_num_rows($Recordset);


while(
$row_Recordsetmysql_fetch_assoc($Recordset)); {
 
?>
<option value="<?php echo $row_Recordset['id']; ?>"><?php echo $row_Recordset['descrip'];?> </option>
<?php ?>

</select>
Saludos.

Última edición por Gaug; 24/07/2009 a las 16:03
  #14 (permalink)  
Antiguo 24/07/2009, 16:05
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Relacionar dos tablas.

EDIT: Resuelto, era un problema de mi BD, muchas gracias por tu ayuda doylelives.

Última edición por Gaug; 24/07/2009 a las 16:52
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 21:23.