Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/10/2013, 07:47
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: query compleja

Hola Maverik2:

Tu consulta para nada es compleja... de hecho es bastante básica , sólo que creo que no te tomaste un tiempo para aprender las nociones de SQL.

No estás colocando ninguna relación entre tus tablas, por lo tanto se está realizando un PRODUCTO CARTESIANO:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla1;
  2. +------+-------------+
  3. | id   | descripcion |
  4. +------+-------------+
  5. |    1 | uno         |
  6. |    2 | dos         |
  7. |    3 | tres        |
  8. +------+-------------+
  9. 3 rows in set (0.00 sec)
  10.  
  11. mysql> SELECT * FROM tabla2;
  12. +------+-------------+
  13. | id   | descripcion |
  14. +------+-------------+
  15. |    1 | uno         |
  16. |    2 | dos         |
  17. |    3 | tres        |
  18. +------+-------------+
  19. 3 rows in set (0.00 sec)
  20.  
  21. mysql> SELECT * FROM tabla1, tabla2;
  22. +------+-------------+------+-------------+
  23. | id   | descripcion | id   | descripcion |
  24. +------+-------------+------+-------------+
  25. |    1 | uno         |    1 | uno         |
  26. |    2 | dos         |    1 | uno         |
  27. |    3 | tres        |    1 | uno         |
  28. |    1 | uno         |    2 | dos         |
  29. |    2 | dos         |    2 | dos         |
  30. |    3 | tres        |    2 | dos         |
  31. |    1 | uno         |    3 | tres        |
  32. |    2 | dos         |    3 | tres        |
  33. |    3 | tres        |    3 | tres        |
  34. +------+-------------+------+-------------+
  35. 9 rows in set (0.00 sec)
  36.  
  37. mysql> SELECT * FROM tabla1, tabla2 WHERE tabla1.id = 1;
  38. +------+-------------+------+-------------+
  39. | id   | descripcion | id   | descripcion |
  40. +------+-------------+------+-------------+
  41. |    1 | uno         |    1 | uno         |
  42. |    1 | uno         |    2 | dos         |
  43. |    1 | uno         |    3 | tres        |
  44. +------+-------------+------+-------------+
  45. 3 rows in set (0.00 sec)

es decir, cada registro de tu tabla 1 se une con cada registro de tu tabla2...

No nos dices por qué campo están relacionadas tus tablas, puedo suponer que se trata de los campos (id e id_empleado), pero eso sólo tú lo sabes...

En lugar de poner las tablas en el FROM separadas por comas (JOIN implícito)

Código:
...
FROM tabla1, tabla2 WHERE tabla1.campo = tabla2.campo
Has un JOIN EXPLICITO:

Código:
...
FROM tabla1 INNER JOIN tabla2 ON tabla2.campo = tabla2.campo
Con el ejemplo que puse quedaría así:

Código:
mysql> SELECT * FROM tabla1 INNER JOIN tabla2 ON tabla1.id = tabla2.id;
+------+-------------+------+-------------+
| id   | descripcion | id   | descripcion |
+------+-------------+------+-------------+
|    1 | uno         |    1 | uno         |
|    2 | dos         |    2 | dos         |
|    3 | tres        |    3 | tres        |
+------+-------------+------+-------------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM tabla1 INNER JOIN tabla2 ON tabla1.id = tabla2.id
    -> WHERE tabla1.id = 1;
+------+-------------+------+-------------+
| id   | descripcion | id   | descripcion |
+------+-------------+------+-------------+
|    1 | uno         |    1 | uno         |
+------+-------------+------+-------------+
1 row in set (0.00 sec)
Puedes leer más acerca del JOIN en SANTA WIKIPEDIA:

http://es.wikipedia.org/wiki/Join

Observa los ejemplos con LEFT y RIGTH para los casos donde los empleados no tengan solicitudes.

Saludos
Leo.