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

Consulta SQL

Estas en el tema de Consulta SQL en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 03/05/2011, 03:32
 
Fecha de Ingreso: diciembre-2009
Mensajes: 186
Antigüedad: 14 años, 4 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

Etiquetas: sql
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 23:17.