Ver Mensaje Individual
  #6 (permalink)  
Antiguo 31/08/2012, 10:25
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Problema con consulta MySql

Hola de nuevo:

En realidad no entiendo mucho la lógica de la consulta... el CASE-WHEN me dice que sólo te interesan aquellos usuarios que tengan asignada la tarea 84... los demás no los consideras, pues le asignas un NULL directamente... hay varias formas de resolver la consulta una sería con dos subconsultas y un UNION... sería más o menos así:

Código MySQL:
Ver original
  1. mysql> SELECT
  2.     -> DISTINCT c.ID, c.name,c.user,
  3.     ->   tc.task
  4.     -> FROM collaborators c
  5.     -> LEFT JOIN tasks_collaborators tc ON c.ID = tc.collaborator
  6.     -> WHERE tc.task = 84
  7.     -> UNION
  8.     -> SELECT
  9.     -> DISTINCT c.ID, c.name,c.user,NULL
  10.     -> FROM collaborators c
  11.     -> LEFT JOIN tasks_collaborators tc ON c.ID = tc.collaborator
  12.     -> WHERE NOT EXISTS (SELECT collaborator
  13.     ->                   FROM tasks_collaborators tc2
  14.     ->                   WHERE tc.collaborator = tc2.collaborator AND
  15.     ->                   tc2.task = 84);
  16. +------+----------------+------+------+
  17. | ID   | name           | user | task |
  18. +------+----------------+------+------+
  19. |    9 | Administracion |    4 |   84 |
  20. |   12 | Raimundo       |    4 |   84 |
  21. |   13 | Compras        |    4 | NULL |
  22. |   14 | RH             |    4 | NULL |
  23. |   15 | Proveedor      |    4 | NULL |
  24. |   16 | Yuraima Salas  |    4 | NULL |
  25. |   17 | Sandra         |    4 | NULL |
  26. |   18 | Contabilidad   |    4 | NULL |
  27. +------+----------------+------+------+
  28. 8 rows in set (0.02 sec)
en la primer parte sólo considera los usuarios que tienen la tarea 84, en la seguna parte todos aquellos que no tienen asignada la tarea (por eso el NOT EXISTS)... en realidad no sé sí es la mejor opción, es cuestión de que sigas investigando un poco para ver si encuentras algo más óptimo.

Saludos
Leo.