Foros del Web » Programando para Internet » PHP »

¿Seleccionar datos de dos tablas de una misma base de datos?

Estas en el tema de ¿Seleccionar datos de dos tablas de una misma base de datos? en el foro de PHP en Foros del Web. Tengo esto, y funciona: $query = sprintf('SELECT users.name, users.lastname, users.birthday, users.sex FROM users WHERE users.email="'.mysql_real_escape_string($email).'" AND users.password="'.mysql_real_escape_string($passwo rd).'"'); Ahora quiero saber que opinan de lo ...
  #1 (permalink)  
Antiguo 29/03/2014, 18:57
Avatar de AngelMarine  
Fecha de Ingreso: enero-2014
Ubicación: Madrid
Mensajes: 79
Antigüedad: 10 años, 3 meses
Puntos: 0
Pregunta ¿Seleccionar datos de dos tablas de una misma base de datos?

Tengo esto, y funciona:

$query = sprintf('SELECT users.name, users.lastname, users.birthday, users.sex FROM users WHERE users.email="'.mysql_real_escape_string($email).'" AND users.password="'.mysql_real_escape_string($passwo rd).'"');

Ahora quiero saber que opinan de lo siguiente:

$query = sprintf('SELECT users.name, users.lastname, users.birthday, users.sex FROM users AND images.img_name FROM images WHERE users.email="'.mysql_real_escape_string($email).'" AND users.password="'.mysql_real_escape_string($passwo rd).'"');

La diferencia radica en que en el segundo código incluyo la tabla de "images", ¿Es correcto esto?
  #2 (permalink)  
Antiguo 29/03/2014, 20:15
Avatar de jheckson  
Fecha de Ingreso: febrero-2011
Ubicación: $VE->Aragua['Maracay']
Mensajes: 109
Antigüedad: 13 años, 2 meses
Puntos: 8
Respuesta: ¿Seleccionar datos de dos tablas de una misma base de datos?

Justo despues del "FROM" debes colocar las distintas tablas a usar separadas por una coma, en tu caso seria:
"... FROM imagenes, users WHERE...
y asi podras utilizarlas! =)
__________________
Ayudar a otros, es una de las mejores formas de aprender y ayudarse a si mismo! =)

>[Jheck]<
  #3 (permalink)  
Antiguo 29/03/2014, 23:24
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: ¿Seleccionar datos de dos tablas de una misma base de datos?

tendrias que usar joins para traer la imagen del usuario...

seria asi..


select * from (usuarios inner join imagenes on usuarioId=imagenUsuarioId) where usuario='$usuario' and password='$pass'


espero haber ayudado..
  #4 (permalink)  
Antiguo 30/03/2014, 12:10
Avatar de AngelMarine  
Fecha de Ingreso: enero-2014
Ubicación: Madrid
Mensajes: 79
Antigüedad: 10 años, 3 meses
Puntos: 0
Pregunta Respuesta: ¿Seleccionar datos de dos tablas de una misma base de datos?

Cita:
Iniciado por marcusaurelio Ver Mensaje
tendrias que usar joins para traer la imagen del usuario...

seria asi..


select * from (usuarios inner join imagenes on usuarioId=imagenUsuarioId) where usuario='$usuario' and password='$pass'


espero haber ayudado..
¿El código completo sería algo así?:

PD: En este código que se inicia después que el usuario ingresa sus datos en un formulario de inicio de sesión, defino las variables que se van a usar en la sesión del usuario.

<?php
session_start();
require_once('conectar_basededatos.php');
mysql_connect("localhost","root", "", "registro");

$email = strip_tags($_POST['email']);
$password = strip_tags(sha1($_POST['password']));

$query = sprintf('SELECT usuarios.name, usuarios.lastname, usuarios.birthday, usuarios.sex FROM usuarios WHERE usuarios.email="'.mysql_real_escape_string($email) .'" AND usuarios.password="'.mysql_real_escape_string($pas sword).'"');

¿Dónde se supone que debo meter esto?
select * from (usuarios inner join imagenes on usuarioId=imagenUsuarioId) where usuario='$usuario' and password='$pass'


$result = mysql_query($query,$link);
if(mysql_num_rows($result)){
$array = mysql_fetch_array($result);
$_SESSION['logged'] = 'yes';
$_SESSION['name'] = $array['name'];
$_SESSION['lastname'] = $array['lastname'];
$_SESSION['birthday'] = $array['birthday'];
$_SESSION['sex'] = $array['sex'];

echo '<script>window.location="ingresar.php"</script>';
}else{
echo '<script>window.location="intentadenuevo.html"</script>';
}
?>

Gracias de antemano. :a rriba:
  #5 (permalink)  
Antiguo 31/03/2014, 08:12
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: ¿Seleccionar datos de dos tablas de una misma base de datos?

estimado/a angelMarine... lo que mte puse es el string para la consulta.. claro esta que debes reemplazarlo. por tus variables y por tus.. campos.. lo cual te quedaria mas o menos asi..

Código:
<?php
session_start();
require_once('conectar_basededatos.php');
mysql_connect("localhost","root", "", "registro");

$email = strip_tags($_POST['email']);
$password = strip_tags(sha1($_POST['password']));

$query = sprintf('SELECT usuarios.name, usuarios.lastname, usuarios.birthday, usuarios.sex FROM from (usuarios inner join imagenes on usuarioId=imagenUsuarioId) usuarios.email="'.mysql_real_escape_string($email) .'" AND usuarios.password="'.mysql_real_escape_string($pas sword).'"');


/*donde usuatioID es el id del usuario en la tabla usuarios y imagenUsuarioId es el campo con el que tengas relacionadas las tablas. y imagenes es la tabla de imagenes.. cambia esos datos y funcionara.. .. */

$result = mysql_query($query,$link);
if(mysql_num_rows($result)){
$array = mysql_fetch_array($result);
$_SESSION['logged'] = 'yes';
$_SESSION['name'] = $array['name'];
$_SESSION['lastname'] = $array['lastname'];
$_SESSION['birthday'] = $array['birthday'];
$_SESSION['sex'] = $array['sex'];

echo '<script>window.location="ingresar.php"</script>';
}else{
echo '<script>window.location="intentadenuevo.html"</script>';
}
?>
  #6 (permalink)  
Antiguo 01/04/2014, 13:33
Avatar de AngelMarine  
Fecha de Ingreso: enero-2014
Ubicación: Madrid
Mensajes: 79
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: ¿Seleccionar datos de dos tablas de una misma base de datos?

Ah, jejeje, ¡muchas gracias!.
  #7 (permalink)  
Antiguo 01/04/2014, 15:01
Avatar de AngelMarine  
Fecha de Ingreso: enero-2014
Ubicación: Madrid
Mensajes: 79
Antigüedad: 10 años, 3 meses
Puntos: 0
Pregunta Respuesta: ¿Seleccionar datos de dos tablas de una misma base de datos?

Cita:
Iniciado por marcusaurelio Ver Mensaje
estimado/a angelMarine... lo que mte puse es el string para la consulta.. claro esta que debes reemplazarlo. por tus variables y por tus.. campos.. lo cual te quedaria mas o menos asi..

Código:
<?php
session_start();
require_once('conectar_basededatos.php');
mysql_connect("localhost","root", "", "registro");

$email = strip_tags($_POST['email']);
$password = strip_tags(sha1($_POST['password']));

$query = sprintf('SELECT usuarios.name, usuarios.lastname, usuarios.birthday, usuarios.sex FROM from (usuarios inner join imagenes on usuarioId=imagenUsuarioId) usuarios.email="'.mysql_real_escape_string($email) .'" AND usuarios.password="'.mysql_real_escape_string($pas sword).'"');


/*donde usuatioID es el id del usuario en la tabla usuarios y imagenUsuarioId es el campo con el que tengas relacionadas las tablas. y imagenes es la tabla de imagenes.. cambia esos datos y funcionara.. .. */

$result = mysql_query($query,$link);
if(mysql_num_rows($result)){
$array = mysql_fetch_array($result);
$_SESSION['logged'] = 'yes';
$_SESSION['name'] = $array['name'];
$_SESSION['lastname'] = $array['lastname'];
$_SESSION['birthday'] = $array['birthday'];
$_SESSION['sex'] = $array['sex'];

echo '<script>window.location="ingresar.php"</script>';
}else{
echo '<script>window.location="intentadenuevo.html"</script>';
}
?>
Bueno, una pregunta, ¿a qué se debe el doble FROM from?:

$query = sprintf('SELECT usuarios.name, usuarios.lastname, usuarios.birthday, usuarios.sex FROM from (usuarios inner join imagenes on usuarioId=imagenUsuarioId) usuarios.email="'.mysql_real_escape_string($email) .'" AND usuarios.password="'.mysql_real_escape_string($pas sword).'"');:pensand o:

Ahora bien, esto funcionaría solo para una imagen ¿cierto?, lo digo porque en el script se definen las variables nombre, apellido, etc.. pero no de imagen, todavía me queda la duda de como mostrar la imagen si no la he definido como variable, y por otro lado, ¿qué pasa si el usuario sube 2, 10 o más imágenes?, espero no ser inoportuno, te agradezco la ayuda.

Última edición por AngelMarine; 01/04/2014 a las 15:30
  #8 (permalink)  
Antiguo 01/04/2014, 19:02
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: ¿Seleccionar datos de dos tablas de una misma base de datos?

Cita:
Iniciado por AngelMarine Ver Mensaje
Bueno, una pregunta, ¿a qué se debe el doble FROM from?:

$query = sprintf('SELECT usuarios.name, usuarios.lastname, usuarios.birthday, usuarios.sex FROM from (usuarios inner join imagenes on usuarioId=imagenUsuarioId) usuarios.email="'.mysql_real_escape_string($email) .'" AND usuarios.password="'.mysql_real_escape_string($pas sword).'"');:pensand o:

Ahora bien, esto funcionaría solo para una imagen ¿cierto?, lo digo porque en el script se definen las variables nombre, apellido, etc.. pero no de imagen, todavía me queda la duda de como mostrar la imagen si no la he definido como variable, y por otro lado, ¿qué pasa si el usuario sube 2, 10 o más imágenes?, espero no ser inoportuno, te agradezco la ayuda.
¿A qué se debe?
Simple: Esta muy mal escrita.

Código SQL:
Ver original
  1. SELECT
  2.     U.`name`,
  3.     U.lastname,
  4.     U.birthday,
  5.     U.sex
  6. FROM
  7.     usuarios U INNER JOIN imagenes I ON U.usuarioId = I.imagenUsuarioId
  8. WHERE
  9.     U.email="'.mysql_real_escape_string($email) .'"
  10.     AND U.password="'.mysql_real_escape_string($pas sword).'
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 01/04/2014, 21:58
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: ¿Seleccionar datos de dos tablas de una misma base de datos?

error de lipotimia..
  #10 (permalink)  
Antiguo 01/04/2014, 22:05
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: ¿Seleccionar datos de dos tablas de una misma base de datos?

no se cuales son los campos de tu tabla de imagenes.. pero tenes que agregarlos al select y luego lo utilizas como cualquier otro..

$_SESSION['foto'] = $array['foto'];

luego la imagen es mas omenos asi...

<img src="ruta/a/tu/foto<?php echo $_SESSION['foto'];?>"/> eso si solo guardate el nombre.. o si guardate la ruta completa.. solo pegas el php echo....

ahhh y aun asi, para mi, sigue estando mal escrita....
  #11 (permalink)  
Antiguo 06/04/2014, 05:19
Avatar de AngelMarine  
Fecha de Ingreso: enero-2014
Ubicación: Madrid
Mensajes: 79
Antigüedad: 10 años, 3 meses
Puntos: 0
Pregunta Respuesta: ¿Seleccionar datos de dos tablas de una misma base de datos?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿A qué se debe?
Simple: Esta muy mal escrita.

Código SQL:
Ver original
  1. SELECT
  2.     U.`name`,
  3.     U.lastname,
  4.     U.birthday,
  5.     U.sex
  6. FROM
  7.     usuarios U INNER JOIN imagenes I ON U.usuarioId = I.imagenUsuarioId
  8. WHERE
  9.     U.email="'.mysql_real_escape_string($email) .'"
  10.     AND U.password="'.mysql_real_escape_string($pas sword).'
¿Qué opinas de este? (hombre tu disculpa la insistencia, es que me interesa conocer los errores del código):

$query = sprintf('

SELECT U.name, U.lastname, U.birthday, U.sex, I.id, I.id_user, I.name

FROM users U images I

INNER JOIN images I ON U.user = I.id_user

WHERE U.email = "'.mysql_real_escape_string($email) .'"

AND U.password = "'.mysql_real_escape_string($password).'"

');

PD: El código inicial lo he basado en esto: http://es1.php.net/mysql_query sin embargo se lee el mensaje de que se encuentra obsoleto, en su lugar recomienda msqli_query: http://es1.php.net/mysqli_query


Última edición por AngelMarine; 06/04/2014 a las 06:23
  #12 (permalink)  
Antiguo 08/04/2014, 14:00
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: ¿Seleccionar datos de dos tablas de una misma base de datos?

a.. ver...

no tiene mucho sentido usar sprintf.. sin usarla..

es decir.. sprinntf es una funcion la misma recibe varios parametros.. y vos las estas poniendo pero no la estas usando.. tratare de explicarlo..

Código:
$txt1="saludar";
$txt2="forosdelweb";

$salida=sprintf("me gustaria %s a todo %s",$txt1,$txt2);

//esto arrojaria "me gustaria saludar a todo forosdelweb", ya que el primer //parametro reemplazaria el primer %s y lo mismo con el segundo.. %s significa //que lo vas a reemplazar con un string.. 

//en tu caso lo haria asi

$query = sprintf("

SELECT U.name, U.lastname, U.birthday, U.sex, I.id, I.id_user, I.name

FROM users U images I

INNER JOIN images I ON U.user = I.id_user

WHERE U.email = '%s'

AND U.password = '%s'",
mysql_real_escape_string($email),
mysql_real_escape_string($password));
pegate una vuelta por http://www.php.net/manual/es/function.sprintf.php

Etiquetas: php+bd+mysql
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 10:40.