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

Duda para realizar consulta

Estas en el tema de Duda para realizar consulta en el foro de Bases de Datos General en Foros del Web. Hola tengo una tabla para relacionar usuarios entre si, coomo amigos. se compone por : | id | user1 | user2 | activado | el ...
  #1 (permalink)  
Antiguo 03/07/2008, 10:48
 
Fecha de Ingreso: noviembre-2007
Mensajes: 264
Antigüedad: 16 años, 5 meses
Puntos: 0
Duda para realizar consulta

Hola tengo una tabla para relacionar usuarios entre si, coomo amigos.

se compone por : | id | user1 | user2 | activado |
el usuario 1 es el k pide al usuario 2 ke lo acepte,
entonces yo kiero mostrar todos los amigos de un usuario en concreto
con lo cual ste usuario puede estar en el campo user1 o user2....

kiero mostrar user1 cuando el usuario este en user2 y vicebersa...
alguien puede ayudarme?? gracias
  #2 (permalink)  
Antiguo 03/07/2008, 15:45
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Duda para realizar consulta

Esta la aprendí de Quimfv: para encontrar el idusuario 1.
Código:
SELECT u1.nombre as USER_1, 
u2.nombre as USER_2 FROM 
(usuarios AS u1 INNER JOIN contactos 
ON u1.idusuario = contactos.user1) INNER JOIN usuarios AS u2
ON u2.idusuario= contactos.user2 
WHERE u1.idusuario = 1 OR u2.idusuario = 1
  #3 (permalink)  
Antiguo 03/07/2008, 16:19
 
Fecha de Ingreso: noviembre-2007
Mensajes: 264
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Duda para realizar consulta

gracias x la ayuda pero ske no lo entiendo... podrias transcribirmela con mis campos???

| id_amigo | user1 | user2 | activado |


kiero ke me muestre todos los amigos sabiendo solo el nombre de un usuario...
gracias
  #4 (permalink)  
Antiguo 03/07/2008, 22:59
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Duda para realizar consulta

layker,
para ayudarte en lo que quieres, debo saber los nombres de las dos tablas, y los nombres de los campos de la tabla donde recoges los nombres...
  #5 (permalink)  
Antiguo 04/07/2008, 00:56
 
Fecha de Ingreso: noviembre-2007
Mensajes: 264
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Duda para realizar consulta

Cita:
Iniciado por jurena Ver Mensaje
layker,
para ayudarte en lo que quieres, debo saber los nombres de las dos tablas, y los nombres de los campos de la tabla donde recoges los nombres...
aber no me e explicado bien... solo hay una tabla.
con esos campos, yo kiero que poniendo un nombre de un usuario me muestre sus amigos.... no se si m explico
x ejemplo si pongo SELECT * FROM amigos WHERE user1 = '$usuario' OR user2 = '$usuario' me muestra los 2 campos el ke contiene a $usuario y el del amigo pero solo kiero k me muestre los amigos.
gracias
  #6 (permalink)  
Antiguo 04/07/2008, 02:22
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Duda para realizar consulta

Cita:
con esos campos, yo kiero que poniendo un nombre de un usuario me muestre sus amigos.... no se si m explico
x ejemplo si pongo SELECT * FROM amigos WHERE user1 = '$usuario' OR user2 = '$usuario' me muestra los 2 campos el ke contiene a $usuario y el del amigo pero solo kiero k me muestre los amigos.
pues no pongas * en el select!!!

select CASE when user1 = '$usuario' then user1 else user2 end as amigo
FROM amigos WHERE user1 = '$usuario' OR user2 = '$usuario

salu2
  #7 (permalink)  
Antiguo 05/07/2008, 03:22
 
Fecha de Ingreso: noviembre-2007
Mensajes: 264
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Duda para realizar consulta

muxas gracias eso es lo k yo keria... pero ara me a surgido otra duda...
tengo una tabla para ver los usuarios online, formada por |usuario|tiempo| si el usuario esta en la tabla kiere dcir k esta conectado y si no, no lo sta.
coomo puedo ordenadar la lista de amigos que me muestra con esa consulta en relacion a si estan conectados.
es decir ke me muestre primero los ke estan online y luego los demas.
muxas gracias
  #8 (permalink)  
Antiguo 05/07/2008, 05:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Duda para realizar consulta

Cita:
Iniciado por layker Ver Mensaje
tengo una tabla para ver los usuarios online, formada por |usuario|tiempo| si el usuario esta en la tabla kiere dcir k esta conectado y si no, no lo sta.
coomo puedo ordenadar la lista de amigos que me muestra con esa consulta en relacion a si estan conectados.
es decir ke me muestre primero los ke estan online y luego los demas.
muxas gracias
Usando left join y jugando con el NULL generado en aquellos que no están en conexion (así he llamado a la tabla). Además te he puesto el campo de activo. Observa que ordena en primer lugar por el criterio de estado (activo/inactivo), y activo está antes que inactivo en el orden alfabético, y luego he ordenado por otro campo que quieras que sirva de orden, en este caso el user que le corresponda.

Código:
SELECT CASE WHEN user1 =1
THEN user2
ELSE user1
END AS amigo, IF( c.usuario IS NULL , 'activo', 'inactivo' ) AS estado
FROM amigos a
LEFT JOIN conexion c ON ( a.user1 = c.usuario
OR a.user2 = c.usuario ) 
WHERE a.user1 =1
OR a.user2 =1
ORDER BY IF( c.usuario IS NULL , 'activo', 'inactivo' ) , CASE WHEN user1 =1
THEN user2
ELSE user1
END
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 08:26.