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

consulta con tres tablas

Estas en el tema de consulta con tres tablas en el foro de Mysql en Foros del Web. Hola, gracias a todos los foristas que ayudan a aquellos que inician Mysql en especial a gnzsoloyo. Tengo un problema con tres tablas: ss_objetive, ss_tareas ...
  #1 (permalink)  
Antiguo 06/12/2010, 08:44
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
consulta con tres tablas

Hola, gracias a todos los foristas que ayudan a aquellos que inician Mysql en especial a gnzsoloyo. Tengo un problema con tres tablas: ss_objetive, ss_tareas y ss_seg.

Hago LEFT JOIN con ss_tareas y ss_seg, tengo este resultado:
Código MySQL:
Ver original
  1. mysql>  SELECT
  2.            o4.id IDoper,t.id IDtareas, IFNULL(s.value,0) Valor,s.fecha fecha
  3.     FROM ss_objetive o4
  4.            LEFT JOIN ss_tareas t ON t.idopera = o4.id
  5.        LEFT JOIN ss_seg s ON s.idtarea = t.id
  6.         WHERE o4.idges = 3 AND o4.tipo = 4 AND o4.idare = 65;
  7. +--------+----------+-------+------------+
  8. | IDoper | IDtareas | Valor | fecha      |
  9. +--------+----------+-------+------------+
  10. |    760 |       55 |    20 | 2010-12-06 |
  11. |    760 |       55 |    10 | 2010-09-14 |
  12. |    760 |       56 |    54 | 2010-12-06 |
  13. |    761 |       59 |    90 | 2010-12-06 |
  14. |    761 |       60 |    80 | 2010-12-06 |
  15. |    761 |       61 |    70 | 2010-08-04 |
  16. |    761 |       61 |    70 | 2010-12-06 |
  17. |    762 | NULL     |     0 | NULL       |
  18. |    763 |       62 |    15 | 2010-12-06 |
  19. |    764 |       63 |    67 | 2010-12-06 |
  20. |    764 |       64 |     8 | 2010-12-06 |
  21. |    765 |       65 |    80 | 2010-12-06 |
  22. |    766 | NULL     |     0 | NULL       |
  23. |    767 | NULL     |     0 | NULL       |
  24. |    768 |       71 |    50 | 2010-12-06 |
  25. |    768 |       72 |    80 | 2010-12-06 |
  26. |    769 | NULL     |     0 | NULL       |
  27. |    770 | NULL     |     0 | NULL       |
  28. |    771 |       70 |    30 | 2010-12-06 |
  29. |    772 |       57 |    50 | 2010-12-06 |
  30. |    772 |       58 |     0 | 2010-12-06 |
  31. |    772 |       58 |    50 | 2010-12-06 |
  32. +--------+----------+-------+------------+
  33. 22 rows in set
Todo bien hasta aqui, ahora necesito extraer solo un registro (de la columna Valor) de la tabla ss_seg que sea de la última fecha, aquel que no este en la tabla ss_seg me devuelve NULL pero yo modifico tal columna a 0 (puesto que significaria que no tiene avance), mi gran problema está en que si uso GROUP BY me elimina los NULL y yo necesito que se mantenga los NULL que para mi es cero.

Cuál sería mi consulta par mantener los NULL?
  #2 (permalink)  
Antiguo 07/12/2010, 09:19
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: consulta con tres tablas

buscando y rebuscando entre muchos querys, me di cuenta de como podía arreglar mi problema, para aquellos que talves topen con esto aqui sta la solución.
Código MySQL:
Ver original
  1. mysql>  SELECT o4.id IDOPERA,t.id TAREA, IFNULL(s.value,0) promedio,s.fecha
  2.     FROM ss_objetive o4
  3.   LEFT JOIN ss_tareas t ON t.idopera = o4.id
  4.     LEFT JOIN
  5. (
  6. SELECT id, idtarea, value,fecha
  7.     (SELECT id, idtarea, value, fecha
  8.     FROM ss_seg
  9.     WHERE fecha BETWEEN CONCAT(YEAR(CURDATE()),'-01-01') AND '2010-12-07'
  10.     ORDER BY fecha DESC, idtarea ASC) AS T
  11. GROUP BY idtarea
  12. ) AS s ON s.idtarea = t.id
  13.   WHERE
  14.     o4.idges = 3 AND o4.tipo = 4 AND o4.idare = 65
  15.     ORDER BY o4.id,s.fecha;
  16. +---------+-------+----------+---------------------+
  17. | IDOPERA | TAREA | promedio | fecha               |
  18. +---------+-------+----------+---------------------+
  19. |     760 |    55 |       20 | 2010-12-06 00:00:00 |
  20. |     760 |    56 |       54 | 2010-12-06 00:00:00 |
  21. |     761 |    59 |       90 | 2010-12-06 00:00:00 |
  22. |     761 |    60 |       80 | 2010-12-06 00:00:00 |
  23. |     761 |    61 |       70 | 2010-12-06 00:00:00 |
  24. |     762 | NULL  |        0 | NULL                |
  25. |     763 |    62 |       15 | 2010-12-06 00:00:00 |
  26. |     764 |    63 |       67 | 2010-12-06 00:00:00 |
  27. |     764 |    64 |        8 | 2010-12-06 00:00:00 |
  28. |     765 |    65 |       96 | 2010-12-06 00:00:00 |
  29. |     766 | NULL  |        0 | NULL                |
  30. |     767 | NULL  |        0 | NULL                |
  31. |     768 |    71 |       50 | 2010-12-06 00:00:00 |
  32. |     768 |    72 |       80 | 2010-12-06 00:00:00 |
  33. |     769 | NULL  |        0 | NULL                |
  34. |     770 | NULL  |        0 | NULL                |
  35. |     771 |    70 |       30 | 2010-12-06 00:00:00 |
  36. |     772 |    57 |       50 | 2010-12-06 00:00:00 |
  37. |     772 |    58 |       50 | 2010-12-06 18:55:00 |
  38. +---------+-------+----------+---------------------+
  39. 19 rows in set

Etiquetas: tablas, tres
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 04:54.