Ver Mensaje Individual
  #14 (permalink)  
Antiguo 22/02/2011, 09:03
Avatar de Heimish2000
Heimish2000
 
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 14 años, 1 mes
Puntos: 89
Respuesta: Un Select un poco complicado

El ORDER BY lo tienes que poner al final, para que afecte a toda la UNION, pero entonces no quedarán los que tienen alguna cuota pagada al principio y los que no tienen ninguna al final.

Una solución que se me ocurre, pero no se si funciona, es que en el primer SELECT añadas una columna que muestre un 1 y en el segundo un 2 y ordenes por ese campo antes que por id de usuario. Algo así (pero ya te digo que no estoy seguro que funcione)

Código SQL:
Ver original
  1. SELECT *, 1 AS b
  2. FROM
  3. usuarios u
  4. LEFT JOIN cuotas_usuarios c ON u.Nusuario = c.Nusuario
  5. INNER JOIN cuotas cu ON c.Ncuota = cu.Ncuota AND cu.fecha = '2011'
  6. WHERE
  7. u.Nusuario IN (SELECT u2.Nusuario FROM
  8. usuarios u2
  9. LEFT JOIN cuotas_usuarios c1 ON u2.Nusuario = c1.Nusuario
  10. INNER JOIN cuotas cu2 ON c1.Ncuota = cu2.Ncuota AND cu2.fecha = '2011'
  11. WHERE
  12. u2.Ngrupo = '1'
  13. AND c1.pagado = 'si')
  14. UNION
  15. SELECT *, 2 AS b
  16. FROM
  17. usuarios u3
  18. LEFT JOIN cuotas_usuarios c2 ON u3.Nusuario = c2.Nusuario
  19. INNER JOIN cuotas cu3 ON c2.Ncuota = cu3.Ncuota AND cu3.fecha = '2011'
  20. WHERE
  21. u3.Ngrupo = '1'
  22. AND u3.Nusuario NOT IN (SELECT u4.Nusuario FROM
  23. usuarios u4
  24. LEFT JOIN cuotas_usuarios c3 ON u4.Nusuario = c3.Nusuario
  25. INNER JOIN cuotas cu4 ON c3.Ncuota = cu4.Ncuota AND cu4.fecha = '2011'
  26. WHERE
  27. u4.Ngrupo = '1'
  28. AND c3.pagado = 'si')
  29. ORDER BY b, c.Nusuario