Tema: Consulta SQL
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/05/2011, 03:32
DarkWater
 
Fecha de Ingreso: diciembre-2009
Mensajes: 186
Antigüedad: 14 años, 5 meses
Puntos: 5
Consulta SQL

Hola conseguí crear la siguiente consulta:

Código:
(SELECT usu1.id_eliminatoria 'id_eliminatoria_orden',usu1.id_usuario,usu1.nick,usu1.pais,usu1.imagen,usu2.id_eliminatoria 'id_eliminatoria2',usu2.id_usuario 'id_usuario2',usu2.nick 'nick2',usu2.pais 'pais2',usu2.imagen 'imagen2'
                        FROM (SELECT id_eliminatoria,usuarios.id_usuario,nick,pais,imagen  
                                 FROM usuarios,torneo_usuarios,torneo_eliminatorias  
                                 WHERE torneo_eliminatorias.num_usuario1=torneo_usuarios.num_usuario   
                                         AND torneo_usuarios.id_usuario=usuarios.id_usuario   
                                         AND torneo_eliminatorias.id_torneo=torneo_usuarios.id_torneo  
                                         AND torneo_eliminatorias.id_torneo=6) AS usu1 left JOIN  
                                (SELECT id_eliminatoria,usuarios.id_usuario,nick,pais,imagen 
                                 FROM usuarios,torneo_usuarios,torneo_eliminatorias  
                                 WHERE torneo_eliminatorias.num_usuario2=torneo_usuarios.num_usuario   
                                         AND torneo_usuarios.id_usuario=usuarios.id_usuario   
                                         AND torneo_eliminatorias.id_torneo=torneo_usuarios.id_torneo   
                                         AND torneo_eliminatorias.id_torneo=6) AS usu2 ON (usu1.id_eliminatoria=usu2.id_eliminatoria))
                        UNION DISTINCT
                        (SELECT usu1.id_eliminatoria 'id_eliminatoria_orden',usu1.id_usuario,usu1.nick,usu1.pais,usu1.imagen,usu2.id_eliminatoria,usu2.id_usuario,usu2.nick,usu2.pais,usu2.imagen
                        FROM (SELECT id_eliminatoria,usuarios.id_usuario,nick,pais,imagen  
                                 FROM usuarios,torneo_usuarios,torneo_eliminatorias  
                                 WHERE torneo_eliminatorias.num_usuario1=torneo_usuarios.num_usuario   
                                         AND torneo_usuarios.id_usuario=usuarios.id_usuario   
                                         AND torneo_eliminatorias.id_torneo=torneo_usuarios.id_torneo  
                                         AND torneo_eliminatorias.id_torneo=6) AS usu1 right JOIN  
                                (SELECT id_eliminatoria,usuarios.id_usuario,nick,pais,imagen 
                                 FROM usuarios,torneo_usuarios,torneo_eliminatorias  
                                 WHERE torneo_eliminatorias.num_usuario2=torneo_usuarios.num_usuario   
                                         AND torneo_usuarios.id_usuario=usuarios.id_usuario   
                                         AND torneo_eliminatorias.id_torneo=torneo_usuarios.id_torneo   
                                         AND torneo_eliminatorias.id_torneo=6) AS usu2 ON (usu1.id_eliminatoria=usu2.id_eliminatoria))
                        ORDER BY id_eliminatoria_orden ASC
Parece muy gande pero en realidad es cuatro veces la misma consulta.
La consulta funciona correctamente pero no se si esta muy bien optimizada. He probado ha hacerlo también con vistas pero parece que funciona más lento. Tampoco estoy muy seguro de para que sirven las vistas.

Lo que intento hacer es un full join entre las dos consultas:
Código:
SELECT id_eliminatoria,usuarios.id_usuario,nick,pais,imagen  
                                 FROM usuarios,torneo_usuarios,torneo_eliminatorias  
                                 WHERE torneo_eliminatorias.num_usuario1=torneo_usuarios.num_usuario   
                                         AND torneo_usuarios.id_usuario=usuarios.id_usuario   
                                         AND torneo_eliminatorias.id_torneo=torneo_usuarios.id_torneo  
                                         AND torneo_eliminatorias.id_torneo=6

Y

SELECT id_eliminatoria,usuarios.id_usuario,nick,pais,imagen 
                                 FROM usuarios,torneo_usuarios,torneo_eliminatorias  
                                 WHERE torneo_eliminatorias.num_usuario2=torneo_usuarios.num_usuario   
                                         AND torneo_usuarios.id_usuario=usuarios.id_usuario   
                                         AND torneo_eliminatorias.id_torneo=torneo_usuarios.id_torneo   
                                         AND torneo_eliminatorias.id_torneo=6
no se si se podra mejorar.

Gracias