Código:
Parece muy gande pero en realidad es cuatro veces la misma consulta. (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
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:
no se si se podra mejorar.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
Gracias