|    
			
				24/04/2012, 19:32
			
			
			  | 
  |   |  |  |  Fecha de Ingreso: abril-2012 
						Mensajes: 3
					 Antigüedad: 13 años, 6 meses Puntos: 0 |  | 
  |  Es posible escribir este UNION mejor?  
  Hola a todos!
 Les quería preguntar si es posible escribir mejor esta sentencia, que básicamente lo que hace (o debería de hacer) es mostrar los nombres de la gente que son amigos de un individuo..
 
 Ejemplo:
 
 TABLA USERS
 id | name
 
 1 | Lucas
 2 | Mery
 3 | John
 4 | Raul
 5 | Paul
 6 | Mike
 
 TABLA CONTACTOS
 id | id_usuario1 | id_usuario2
 
 1 | 2 | 1
 2 | 3 | 1
 3 | 1 | 4
 4 | 4 | 3
 5 | 2 | 5
 
 El usuario 1 es el que siempre manda la petición de amistad y el usuario 2 el que la acepta.
 
 Si yo soy el usuario 1 con id en la tabla USER 1 (Lucas) y quiero que en mi perfil se vean a todos mis amigos, es correcto utilizar estas peticiones?
 
 SELECT users.name FROM users, contactos WHERE contactos.id_usuario1 = '1' AND users.id = contactos.id_usuario2
 UNION ALL
 SELECT users.name FROM users, contactos WHERE contactos.id_usuario2 = '1' AND users.id = contactos.id_usuario1;
 
 Lo que hago es primero mirar en la columna "id_usuario2" por todos los amigos del usuario 1 (Lucas) y luego junto esos resultados con los resultados obtenidos de la segunda parte que viene dada por los amigos encontrados en "id_usuario1". Para eso utilizo UNION ALL.
 
 RESULTADO:
 Raul
 Mery
 John
 
 La pregunta es: ¿Hay manera de mejorar esa sentencia u optimizarla?
 ¿Hay un sistema mejor para identificar a los amigos que la que he puesto arriba?
 
 Muchas gracias por vuestra ayuda!
 
 Saludos
     |