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

consulta compleja mysql

Estas en el tema de consulta compleja mysql en el foro de Mysql en Foros del Web. Hola a todos, os explico la situación que tengo y lo que quiero conseguir: Tengo creada una sección de usuarios, y casa usuario puede agregar ...
  #1 (permalink)  
Antiguo 25/02/2008, 18:30
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
consulta compleja mysql

Hola a todos, os explico la situación que tengo y lo que quiero conseguir:
Tengo creada una sección de usuarios, y casa usuario puede agregar usuarios amigos. Para eso tengo creada la tabla usuarios_amigos, en las que tengo los siguientes campos: id_usuario (quien inserta al amigo),y el campo id_usuario_amigo(es el amigo insertado).

Entonces yo quiero que si el usuario quiere ver todos los mensajes de sus usuarios amigos, cómo lo hago para que aparezcan todos los mensajes de sus usuarios amigos ordenados?
Se puede hacer con una simple consulta o no?

Claro que también tengo una tabla llamada mensajes_usuarios en las que aparece además de más campos el campo id_usuario que es del que me ceñiré para conseguir los mensajes del usuario_amigo.

Espero haberme explicado bien y que me ayudeis tan pronto como podais. Muchas gracias!!!
  #2 (permalink)  
Antiguo 25/02/2008, 19:13
 
Fecha de Ingreso: febrero-2008
Mensajes: 17
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: consulta compleja mysql

Hola Acholaco:

Utiliza ORBER BY.

EJ.

SELECT titulo_mensaje FROM usuarios_amigos WHERE id_usuario = 14 ORDER BY mensaje_fecha ASC

ASC para ascendente
DES para descendente

Si quieres mostrar una cantidad límite, agrega al final LIMIT 0,20

EJ.
SELECT titulo_mensaje FROM usuarios_amigos WHERE id_usuario = 14 ORDER BY mensaje_fecha ASC LIMIT 0,20

En LIMIT:

0 (cero) indica que comienza en el primer registro, si quieres mostrar desde por ej. el 10, ingresa 9 (siempre uno menos)
20 el total de registros a buscar partiendo de... (en mi ejemplo cero, o sea desde el comienzo de la tabla)

Espero que te sirva.

Saludos.

Última edición por huma; 25/02/2008 a las 19:19
  #3 (permalink)  
Antiguo 26/02/2008, 02:21
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
Re: consulta compleja mysql

huma creo que no es eso lo que pide.

select mensaje, ...
from mensajes_usuario mu
join usuarios_amigos ua on ua.id_usuario_amigo = mu.id_usuario
where mu.id_usuario = 'Usuarios del que quieres ver los mensajes de sus amigos'
order by ua.id_usuario_amigo;

Espero que te sirva.

Un saludo
  #4 (permalink)  
Antiguo 26/02/2008, 09:02
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
Re: consulta compleja mysql

gracias Huma, pero como bien dice seyko, no es exactamente lo que pido, de todas formas, muchas gracias.
Con respecto a seyko, pues muchas gracias por la ayuda en esa consulta, pero hay algo que no entiendo y es lo de ua; eso es un alias de la base de datos creado con AS. Me podrías poder cómo tendría que quedar exactamente la consulta a la base de datos? Te lo agradecería como el comer!!! Jejeje
Muchas gracias por todoo y a todos
  #5 (permalink)  
Antiguo 26/02/2008, 09:14
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
Re: consulta compleja mysql

En realidad es un alias de la tabla. Para usar alias de tablas no es necesario utilizar AS, al menos en todas las BD que he trabajado. No he usado mysql, asi que si te da problemas usa el AS.

Un saludo
  #6 (permalink)  
Antiguo 26/02/2008, 14:00
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
Re: consulta compleja mysql

ok gracias ya te contaré si me ha funcionado bien para lo que te decía.
Oye una pregunta.
Es realmente malo meter una consulta SELECT dentro de un bucle while? Es que hay algunos casos en los que no he conseguido caer en una forma mejor de poder recuperar los valores de una base de datos
Me gustaría que me informases de si sabes algo sobre eso.
Gracias de nuevo.
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 13:53.