Foros del Web » Programando para Internet » PHP »

Consulta a dos tablas

Estas en el tema de Consulta a dos tablas en el foro de PHP en Foros del Web. Buenos dias tengo un problema. Tengo 2 tablas una llamada USUARIOS y otra SERVICIOS. En la usuarios están los datos de los usuarios ademas que ...
  #1 (permalink)  
Antiguo 27/05/2012, 08:33
 
Fecha de Ingreso: diciembre-2007
Mensajes: 27
Antigüedad: 16 años, 4 meses
Puntos: 0
Sonrisa Consulta a dos tablas

Buenos dias tengo un problema.
Tengo 2 tablas una llamada

USUARIOS y otra
SERVICIOS.

En la usuarios están los datos de los usuarios ademas que mediante formulario eligen varios item que se guardan en la tabla como codigos definidos por mi mismo ejemplo AF001 AF002.

En la tabla servicios estan los codigos y a cada uno les asigne su nombre y su costo.

Lo que quiero hacer es que me devuelva el nombre del servicio segun el codigo que cada usuario selecciono.

MUCHAS GRACIAS
  #2 (permalink)  
Antiguo 27/05/2012, 08:45
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Consulta a dos tablas

Leé sobre INNER JOIN.

http://www.blogdephp.com/consulta-my...-relacionadas/
__________________
nahueljose.com.ar
  #3 (permalink)  
Antiguo 27/05/2012, 08:51
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Consulta a dos tablas

La estructura ideal para tu caso es tener 3 tablas ya que me imagino que un usuario puede tener varios servicio, tu relacion seria n:n entonces para ese caso tendrias que crear una tercera tabla para poder hacer la relacion, con esto mantienes el concepto de integridad_referencial

Usuarios / servicios / relacion


Tb_Relacion
Usuario_id / servicio_id


Y luego puedes unir todo con un join

Saludos.

Última edición por gjx2; 27/05/2012 a las 08:58 Razón: Aclaro el tipo de relacion
  #4 (permalink)  
Antiguo 27/05/2012, 09:35
 
Fecha de Ingreso: diciembre-2007
Mensajes: 27
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Consulta a dos tablas

LO ESTOY INTENTANDO CON ESTE CODIGO PERO NO ME DA NINGUN RESULTADO.

<?php $username = $_COOKIE['funeraria'];
$mivariable = "Select ataud from usuarios where email = '$username'";
$resultado = mysql_query($mivariable,$conex);
$qry = mysql_fetch_array($resultado);

$codigo = mysql_query("select * from servicios WHERE codigo = '$qry'",$conex) or die (mysql_error());
while ($ress = mysql_fetch_array($codigo)) {
echo "$ress[nombre]";

}
?>
  #5 (permalink)  
Antiguo 27/05/2012, 09:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Consulta a dos tablas

Es normal que no sirva, pues la siguiente linea devuelve un array y no un valor sencillo.
Código PHP:
$qry mysql_fetch_array($resultado); 
Te sugiero consultes el manual para que te des cuenta.

Ahora bien, podrías usar algo así:
Código PHP:
$valor $qry['columna']; 
y usar dicho $valor en tu segunda consulta.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 27/05/2012, 09:46
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Consulta a dos tablas

Naahuel y gjx2 le estan dando la manera correcta como se debe hacer. Por favor lea como usar JOIN para realizar la consulta de dos tablas usando una sola consulta.

Además aquí existe un error terrible

Código PHP:
$qry mysql_fetch_array($resultado);
$codigo mysql_query("select * from servicios WHERE codigo = '$qry'",$conex) or die (mysql_error()); 
si $qry es un arreglo y trata de colocar codigo=$qry es humanamente imposible que esta consulta pueda generar algún tipo de resultado, es un error de sintaxis.

Si no le queda claro lea esta guia

http://www.aulaclic.es/sql/t_3_4.htm

Ya si despues de hacer el join tiene dudas trate al menos de hacer la consulta con JOIN y muestrenos los resultados.
__________________
Blog de humor http://elcuasatar.net63.net/
  #7 (permalink)  
Antiguo 27/05/2012, 10:04
 
Fecha de Ingreso: diciembre-2007
Mensajes: 27
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Consulta a dos tablas

No comprendo mucho lo del JOIN.

Pero no podría guardar el resultado de la primera consulta en una variable y luego utilizarla en la otra consulta?
  #8 (permalink)  
Antiguo 27/05/2012, 10:23
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Consulta a dos tablas

Cita:
Iniciado por rocnel Ver Mensaje
No comprendo mucho lo del JOIN.

Pero no podría guardar el resultado de la primera consulta en una variable y luego utilizarla en la otra consulta?
Si se recomienda las lecturas de integridad referencial y del JOIN es porque son necesarias para resolver el problema que tienes. Ya te hemos pasado dos referencias pero si aun así no lo tienes claro busca mas referencias, las que sean necesarias para comprenderlo.

A pesar de que este video esta en inglés te da una forma visual de entender el problema que tienes y porque debes usar el inner join

http://www.youtube.com/watch?v=468_48aSz68
__________________
Blog de humor http://elcuasatar.net63.net/
  #9 (permalink)  
Antiguo 27/05/2012, 10:57
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Consulta a dos tablas

rocnel: Dedicale unos minutos al video que acaba de postear cuasatar. Está en inglés, pero se entiende perfectamente.
__________________
nahueljose.com.ar
  #10 (permalink)  
Antiguo 27/05/2012, 11:21
 
Fecha de Ingreso: diciembre-2007
Mensajes: 27
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Consulta a dos tablas

MUCHAS GRACIAS A TODOS LO LOGRE CON ESTE CODIGO SALUDOS.

<?php $username = $_COOKIE['funeraria'];
$mivariable = mysql_query("SELECT * FROM usuarios, servicios WHERE transporte=codigo AND email = '$username'", $conex) or die (mysql_error());
while ($ress = mysql_fetch_array($mivariable)) {
echo ($ress[13]);

}
?>

Etiquetas: formulario, tabla, tablas, usuarios
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 19:23.