Foros del Web » Programando para Internet » PHP »

Asociar tablas

Estas en el tema de Asociar tablas en el foro de PHP en Foros del Web. No se si es así como se dice por lo que no pude encontrar ejemplos de lo que busco. Quiero obtener un valor de otra ...
  #1 (permalink)  
Antiguo 11/11/2009, 13:37
 
Fecha de Ingreso: noviembre-2009
Mensajes: 12
Antigüedad: 14 años, 5 meses
Puntos: 0
Asociar tablas

No se si es así como se dice por lo que no pude encontrar ejemplos de lo que busco.
Quiero obtener un valor de otra tabla que esta relacionada con un id de una tabla, por ejemplo:

Tengo Tabla1 y Tabla2

Tabla1
- id
- name

Tabla2
- id
- grupo

Entonces, quiero saber el valor de la celda "grupo" de la tabla2 teniendo "id" de la tabla1 que sera igual que id de tabla2

no se si me explique bien, espero su ayuda.
  #2 (permalink)  
Antiguo 11/11/2009, 13:43
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Asociar tablas

Debes usar JOIN:
Código MySQL:
Ver original
  1.     ...
  2.     tabla1 t1
  3.     tabla2 t2
  4.     t1.id = t2.id;
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 11/11/2009, 13:46
Avatar de dcreate  
Fecha de Ingreso: octubre-2009
Ubicación: Veracruz
Mensajes: 536
Antigüedad: 14 años, 6 meses
Puntos: 22
Respuesta: Asociar tablas

lo q buscas es algo asi:

Código php:
Ver original
  1. $curp=$_POST['curp'];
  2. conectar();
  3. $id=$_POST['id'];
  4. $bus=mysql_query("select *from tabla1 where id='$id'");
  5. $fila=mysql_num_rows($bus);
  6. $aux=$op['nombre_campo'];
  7. $bu=mysql_query("select *from tabla_auxiliar where id_auxiliar='$aux'");

solo adecualo a lo q necesitas, suerte
  #4 (permalink)  
Antiguo 11/11/2009, 13:46
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Asociar tablas

o tambien
Código MySQL:
Ver original
  1. SELECT ... FROM tabla1, tabla2 WHERE tabla1.id = tabla2.id
  #5 (permalink)  
Antiguo 11/11/2009, 13:46
Avatar de JessicaTJ  
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 3 meses
Puntos: 25
Respuesta: Asociar tablas

Si no mal recuerdo, seria algo asi mas detallado:

Código PHP:
$sql="SELECT name, t2.grupo FROM Tabla1 AS t1 LEFT JOIN Tabla2 AS t2 ON t1.id = t2.id"
__________________
٩(͡๏̯͡๏)۶ || ٩(͡๏̯͡๏)۶
  #6 (permalink)  
Antiguo 11/11/2009, 13:47
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Asociar tablas

Cita:
Iniciado por dcreate Ver Mensaje
lo q buscas es algo asi:

Código php:
Ver original
  1. $curp=$_POST['curp'];
  2. conectar();
  3. $id=$_POST['id'];
  4. $bus=mysql_query("select *from tabla1 where id='$id'");
  5. $fila=mysql_num_rows($bus);
  6. $aux=$op['nombre_campo'];
  7. $bu=mysql_query("select *from tabla_auxiliar where id_auxiliar='$aux'");

solo adecualo a lo q necesitas, suerte

mmm no estoy deacuerdo en hacer 2 consultas y tanto codigo para algo que puedes hacer con 1 consulta solamente..

saludos!
  #7 (permalink)  
Antiguo 11/11/2009, 13:48
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Asociar tablas

Cita:
Iniciado por Hidek1 Ver Mensaje
o tambien
Código MySQL:
Ver original
  1. SELECT ... FROM tabla1, tabla2 WERE tabla1.id = tabla2.id
Es más óptimo usar JOIN para unir las tablas que hacerlo en el WHERE; es mejor dejar éste último para las demás condiciones que se necesiten.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 11/11/2009, 13:52
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Asociar tablas

Cita:
Iniciado por David Ver Mensaje
Es más óptimo usar JOIN para unir las tablas que hacerlo en el WHERE; es mejor dejar éste último para las demás condiciones que se necesiten.
hay alguna diferencia en tiempo de respuesta?

es que yo uso postgres y me serviria ese dato ya que ahorraria uno que otro segundo por ahi y por aya :B
  #9 (permalink)  
Antiguo 11/11/2009, 15:17
 
Fecha de Ingreso: noviembre-2009
Mensajes: 12
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Asociar tablas

Gracias a todos por la pronta respuesta, creo que voy a usar lo que sugiere David

Código PHP:

$id 
"1";

$res mysql_query("SELECT
       group
      FROM
          cliente t1
      JOIN
          grupo t2
      ON
          t1."
.$id." = t2.id");
$data mysql_fetch_array($res); 
Esta bien hacerlo de esa manera? ahora como se imprime el valor de group del id 1 de tabla1??

cliente
id name
1 Juan
2 Gabriel
3 Luis
4 Natalia

grupo
id group
2 1
3 1
4 2
1 2

En el caso de Juan id=1 quiero obtener el valor de su grupo que es group=2

Última edición por Kost; 11/11/2009 a las 15:29
  #10 (permalink)  
Antiguo 11/11/2009, 15:43
Avatar de JessicaTJ  
Fecha de Ingreso: enero-2007
Ubicación: 127.0.0.1
Mensajes: 472
Antigüedad: 17 años, 3 meses
Puntos: 25
Respuesta: Asociar tablas

Código PHP:
$sql="SELECT name, t2.grupo AS tgrupo
FROM Tabla1 AS t1
LEFT JOIN Tabla2 AS t2 ON t1.id = t2.id"
;
$result mysql_query($sql);
while(
$row mysql_fetch_assoc($result)){
echo 
"Nombre:".$row['name']."<br>Grupo:".$row['tgrupo']."<br>";

Eso con LEFT JOIN con el otro JOIN no tengo ni idea xD
__________________
٩(͡๏̯͡๏)۶ || ٩(͡๏̯͡๏)۶
  #11 (permalink)  
Antiguo 11/11/2009, 16:38
 
Fecha de Ingreso: noviembre-2009
Mensajes: 12
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Asociar tablas

Gracias Jessica, y cómo pongo para decir "quiero obtener el valor group de id=1"?
  #12 (permalink)  
Antiguo 11/11/2009, 17:37
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Asociar tablas

El filtro por ID debes hacerlo en el WHERE. Ahora, si sólo quieres el valor de 'group' de la tabla grupo no necesitas unir las tablas; basta con:
Código MySQL:
Ver original
  1. SELECT `group` FROM grupo WHERE id=$id;
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #13 (permalink)  
Antiguo 11/11/2009, 18:55
 
Fecha de Ingreso: noviembre-2009
Mensajes: 12
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Asociar tablas

Tenes razón David, con eso me funciono, yo me confundi lo de asociar con otra consulta que queria hacer con tres tablas :)
Pero lo que estaba consultando en este theard ya lo pude solucionar con lo siguiente:
Código PHP:
$id "1";
$result mysql_query("SELECT * FROM grupo WHERE id='".$id."'");
$row mysql_fetch_array($result);
echo 
$row['group']; 
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:48.