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

Ayuda con una consulta

Estas en el tema de Ayuda con una consulta en el foro de Mysql en Foros del Web. Tengo una tabla usuarios con id_usuario entre otras cosas y por otro lado, tengo una tabla amigos con pares de tipo id_usuario1, id_usuario2 que representa ...
  #1 (permalink)  
Antiguo 04/10/2009, 11:17
 
Fecha de Ingreso: septiembre-2009
Mensajes: 215
Antigüedad: 14 años, 6 meses
Puntos: 1
Ayuda con una consulta

Tengo una tabla usuarios con id_usuario entre otras cosas y por otro lado, tengo una tabla amigos con pares de tipo id_usuario1, id_usuario2 que representa relaciones de amistad.

Lo que quiero es unir ambas tablas pero no sé como.Lo que probé es lo siguiente:

"SELECT id_usuario1,id_usuario2 FROM amigos

INNER JOIN usuarios ON id_usuario1= '".$idUsuario."' || id_usuario2= '".$idUsuario."'

WHERE id_usuario1 = '".$idUsuario."' || id_usuario2 = '".$idUsuario."'

LIMIT 10";

El tema es que esto me devuelve los registro duplicados. ¿Me podeis decir cómo se hace?

Gracias
  #2 (permalink)  
Antiguo 04/10/2009, 14:01
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: Ayuda con una consulta

Código SQL:
Ver original
  1. SELECT id_usuario1,id_usuario2
  2. FROM amigos A
  3.          INNER JOIN usuarios  U A.id_usuario1= U.idUsuario
  4.          INNER JOIN usuarios  B A.id_usuario2= B.idUsuario;
Tienes una tabla (amigos) que se relaciona dos veces con USUARIO. Ergo, tienes que cruzarlas dos veces con ella, una vez por cada uno de los valores. Pero como es siempre la misma hay que trabajaro con alias.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 05/10/2009, 07:10
 
Fecha de Ingreso: septiembre-2009
Mensajes: 215
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Ayuda con una consulta

Muchas gracias pero no estoy seguro de que eso sea lo que busco.

Tenemos la tablas amigos con las relaciones de amistad y la tabla usuarios con los usuarios.

Yo quiero mostrar información acerca de los amigos de un usuario.Por lo tanto recorro la tabla amigos donde el usuario en cuestión puede ser id_usuario1,id_usuario2 o ninguno de los dos.Si por ejemplo, el usuario es id_usuario1 significa que id_usuario2 es su amigo y entonces quiero mostrar los datos de este amigo que se encuentran en la tabla usuarios.


NO sé si me explico...

Última edición por pinchu; 05/10/2009 a las 07:34
  #4 (permalink)  
Antiguo 05/10/2009, 07:47
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: Ayuda con una consulta

Lo único que tienes que hacer es cambiar de alias en el SELECT y tendrás la info sacada de un caso o de otro:
Código sql:
Ver original
  1. SELECT U.*
  2. FROM amigos A
  3.          INNER JOIN usuarios  U A.id_usuario1= U.idUsuario
  4.          INNER JOIN usuarios  B A.id_usuario2= B.idUsuario;

Código sql:
Ver original
  1. SELECT B.*
  2. FROM amigos A
  3.          INNER JOIN usuarios  U A.id_usuario1= U.idUsuario
  4.          INNER JOIN usuarios  B A.id_usuario2= B.idUsuario;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 05/10/2009, 10:31
 
Fecha de Ingreso: septiembre-2009
Mensajes: 215
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Ayuda con una consulta

Gracias gnzsoloyo pero sigo sin verlo claro(ya sé que soy pesado).

Yo no sé a priori si el id_usuario va a ser id_usuario1,id_usuario2 o ninguno por lo que no puedo elegir la consulta.

Necesito hacer lo siguiente en una sola consulta(quizás sea necesaria más de una):

Busco el id_usuario en un par (id_usuario1,id_usuario2) de la tabla amigos:

Si id_usuario == id_usuario1 => id_usuario2 es amigo y necesito su información sacada de la tabla usuarios


Si id_usuario == id_usuario2 => id_usuario1 es amigo y necesito su información sacada de la tabla usuarios



Muchas
  #6 (permalink)  
Antiguo 07/10/2009, 08:11
 
Fecha de Ingreso: septiembre-2009
Mensajes: 215
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Ayuda con una consulta

Encontré lo que buscaba en una web para el que le pueda interesar:

Tabla accounts : ID,displayname,firstname...
Tabla friends: accountID,friendID

Código:
SELECT DISTINCT a.*
FROM Accounts a
   INNER JOIN Friends f ON a.ID = f.friendID
WHERE f.AccountID = @ID

UNION

SELECT DISTINCT a.*
FROM Accounts a
   INNER JOIN Friends f ON a.ID = f.AccountID
WHERE f.FriendID = @ID

Última edición por pinchu; 07/10/2009 a las 08:47
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 06:48.