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

consulta select multiple

Estas en el tema de consulta select multiple en el foro de Bases de Datos General en Foros del Web. Hola he buscado y he encontrado varias respuestas pero no logro hacerlo correctamente La aplicacion que estoy armando tiene una tabla de servicios una de ...
  #1 (permalink)  
Antiguo 05/08/2009, 06:35
Avatar de ale80262  
Fecha de Ingreso: junio-2008
Mensajes: 66
Antigüedad: 15 años, 10 meses
Puntos: 0
consulta select multiple

Hola he buscado y he encontrado varias respuestas pero no logro hacerlo correctamente

La aplicacion que estoy armando tiene una tabla de servicios una de usuarios otra de avatar de usuarios y otra de comentarios
tengo que relacionar 3 tablas la de usuarios, la de avatar la de usuarios y la de comentarios segun el servicio por el que consultan

Mi problema es el siguiente obtengo el id del servicio con ese id consulto la base de comentarios para que me devuelva los comentarios de ese servicio una vez que se que comentarios tiene nesecito relacionar segun el usuarios que dejo el comentario consultar la tabla de usuarios para obtener el nombre y la tabla de avatar para obtener el nombre del avatar.

codigo tengo que hacer estas tres consultas

Código PHP:
$sql "SELECT * from comentarios where id_servicio = $id_servicio order by id_comentario desc limit 0,6";
$sql_1 "SELECT * from avatar where id_usuario = $id_usuario ";
$sql_2 "SELECT * from usuarios where id_usuario = $id_usuario "
el mi problema esta en que el $id_usuario esta dado por el resultado de la primer consulta

codigo que funciona pero no creo que este bien hecho

Código PHP:
$sql "SELECT * from comentarios where id_servicio = $id_servicio order by id_comentario desc limit 0,6";
$res mysql_query($sql);


while (
$array mysql_fetch_array($res)){

$id_usuario $array["id_usuario"];

$db = new db(true);
$db->setTable('avatar');
$sql_u "SELECT * from avatar where id_usuario = $id_usuario ";
$res_u mysql_query($sql_u);
$tiene mysql_num_rows($res_u);

if (
$tiene == 0){
echo 
'<img src="admin/imagenes/phpthumb.php?src=../../usuario/no.jpg&w=50&h=50&zc=1"></td></tr>';
}else{

while (
$array mysql_fetch_array($res_u))
{

echo 
'<img src="admin/imagenes/phpthumb.php?src=../../usuario/avatar';
echo 
$array["id_usuario"]."/";
echo 
$array["nombre_i"];
echo 
'&w=50&h=50&zc=1"></td></tr>';
}
}

$db = new db(true);
$db->setTable('usuarios');
$sql_u "SELECT * from usuarios where id_usuario = $id_usuario ";
$res_u mysql_query($sql_u);
while (
$array mysql_fetch_array($res_u)){


echo 
$array["usuario"];

}

}




$sql "SELECT * from comentarios where id_servicio = $id_servicio order by id_comentario desc limit 0,6";
$res mysql_query($sql);



while (
$array mysql_fetch_array($res)){


echo 
$array["titulo_comentario"];
echo 
"<br>";
echo 
$array["comentario"];


echo 
$array["fecha"];



Como siempre agradezco qeuin pueda hecharme una mano y saludos a todos
  #2 (permalink)  
Antiguo 06/08/2009, 07:13
Avatar de ale80262  
Fecha de Ingreso: junio-2008
Mensajes: 66
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: consulta select multiple

nadie???

por si no fui claro con el problema que tengo lo reescribo

yo obtengo un id de un servicio y nesecito a partir de ese id mostrar los comentarios que tiene pero una vez que obtengo los resultados del comentario en esa consulta obtengo el id del usuario que hizo el comentario y con ese id de usuario necesito hacer dos consultas una a una tabla de usuarios y otra tabla donde tengo los avatares de los usuarios lo he intentado con inner join y otras cosas y no lo consigo

mi problema esta en que las dos ultimas consultas dependen del resultado de la primer consulta.


bueno si alguien puede aportar le agradecieria mucho.

saludos
dejo las tablas con los campos que nesecito relacionar y mostrar

tablas

Comentarios
id_comentario
id_servicio
id_usuario
titulo_comentario
nombre_comentario

avatar
id_avatar
id_usuario
nombre_i

usuarios
id_usuario
nombre_usuario
  #3 (permalink)  
Antiguo 06/08/2009, 08:19
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, 5 meses
Puntos: 2658
Respuesta: consulta select multiple

Toscamene bocetada sería:
Código sql:
Ver original
  1. SELECT C.* , U.*, A.*
  2. FROM COMENTARIOS C
  3.           INNER JOIN  USUARIOS U USING (ID_USUARIO)
  4.           LEFT JOIN AVATAR  A USING(ID_USUARIO)
  5. WHERE C.ID_SERVICIO = valorrecibido;

El tema es que para que esta consulta te funcione ID_USUARIO debe estar los valores en las tres tablas a, mismo tiempo, y además el ID_SERVICIO que recibes debe existir en su tabla, si o sí.
Estoy usando LEFT JOIN y no INNER JOIN con la tabla AVATAR, ante la eventualidad que un usuario no haya declarado uno (en tu descripcion no explicas cuáles campos son mandatorios y cuales no).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 06/08/2009, 08:53
Avatar de ale80262  
Fecha de Ingreso: junio-2008
Mensajes: 66
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: consulta select multiple

gracias por la respuesta probe esto dejo mi codigo

Código PHP:
$id_usuario $_GET["id_usuario"];

$sql "SELECT comentario.*, usuarios.*, avatar.* from comentarios INNER JOIN usuarios USING (id_usuario) LEFT JOIN avatar USING(id_usuario) where comentarios.id_servicio = $id_servicio";

$res mysql_query($sql);

while (
$array mysql_fetch_array($res)){

echo 
'<img src="admin/imagenes/phpthumb.php?src=../../usuario/avatar';
echo 
$array["id_usuario"]."/";
echo 
$array["nombre_i"];
echo 
'&w=50&h=50&zc=1">';
echo 
"<br>";

echo 
$array["usuario"];
echo 
"<br>";

echo 
$array["titulo_comentario"];
echo 
"<br>";
echo 
$array["comentario"];
echo 
"<br>";

echo 
$array["fecha"];
echo 
"<br>";



no me da ninguna respuesta y tampoco me devuelve error
  #5 (permalink)  
Antiguo 06/08/2009, 10:14
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: consulta select multiple

Lo que tienes qu hacer primero es hacer la consulta en tu base de datos no el codigo.
Asi descartas que tu consulta esta mal.
Si te devuelve registros quiere decir que tu codigo php esta mal.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #6 (permalink)  
Antiguo 06/08/2009, 10:50
Avatar de ale80262  
Fecha de Ingreso: junio-2008
Mensajes: 66
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: consulta select multiple

me funciono me equivoque en un nombre de la tabla muchas gracias me has dado una gran ayuda saludos!!
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:54.