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

Ordenar consulta sql segun resultados de otra tabla

Estas en el tema de Ordenar consulta sql segun resultados de otra tabla en el foro de Mysql en Foros del Web. Hola, tengo una duda... La situacion es la siguiente: Tengo dos tablas, una de amigos y otra de usuarios. La tabla amigos tiene los siguientes ...
  #1 (permalink)  
Antiguo 05/05/2011, 17:05
 
Fecha de Ingreso: mayo-2009
Mensajes: 13
Antigüedad: 14 años, 11 meses
Puntos: 0
Pregunta Ordenar consulta sql segun resultados de otra tabla

Hola, tengo una duda... La situacion es la siguiente:

Tengo dos tablas, una de amigos y otra de usuarios.

La tabla amigos tiene los siguientes campos:
id_user1, id_user2

La tabla de usuarios tiene los siguientes campos:
id_user, nombre, ...(otros datos del usuario)

(Los campos id_user1 e id_user2 estan relacionados con id_user)

Lo que quiero que un usuario pueda ver una lista de todos sus amigos, eso lo puedo hacer de la siguiente manera:
Código SQL:
Ver original
  1. SELECT * FROM amigos WHERE id_user1='".$USER_DATA['id']."' OR id_user2='".$USER_DATA['id']."'

(Las variables $USER_DATA['id'] son de php, y contienen el id del usuario logueado)

El problema es que quiero que esa consulta quede ordenada alfabeticamente segun el nombre del amigo, que esta guardado en la tabla de usuarios usuario y no se como hacerlo.

Desde ya muchas gracias por su ayuda,
Nahuel.
  #2 (permalink)  
Antiguo 05/05/2011, 17:23
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Ordenar consulta sql segun resultados de otra tabla

Una forma:

Código MySQL:
Ver original
  1. SELECT id_user1,id_user2, nombre
  2. FROM usuarios INNER JOIN
  3. (SELECT *
  4. FROM amigos
  5. WHERE id_user1='".$USER_DATA['id']."' OR id_user2='".$USER_DATA['id']."') as Temp
  6. ON usuarios.id_user = Temp.id_user2
  7. ORDER BY nombre

Otra forma de expresar la consulta:

Código MySQL:
Ver original
  1. SELECT id_user1,id_user2, nombre
  2. FROM usuarios INNER JOIN amigos
  3. ON (id_user1='".$USER_DATA['id']."' OR id_user2='".$USER_DATA['id']."')
  4. AND usuarios.id_user = amigos.id_user_2
  5. ORDER BY nombre



No se si esto es lo que quieres porque no especificas que guardar en id_user_1 y en id_user_2. Pero lo importante es que necesitas unir las dos tablas con un INNER JOIN. He supuesto que en id_user2 guardas los amigos del id_user1, aunque si es así te sobraría la segunda condición en el where.

Última edición por alexg88; 05/05/2011 a las 17:41

Etiquetas: resultados, sql, tabla
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 11:28.