Ver Mensaje Individual
  #6 (permalink)  
Antiguo 24/10/2012, 10:09
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: Insercion automatica de datos a tabla

Hola de nuevo Mauk:

Vayamos por partes: es conveniente que antes de todo le des un vistazo a las
Funciones de Fecha y Hora de MySQL, para que veas exactamente qué es lo que hace cada función, por ejemplo:

Código:
aun no sabia bien como funcionaba la función de CURDATE().
CURDATE() obtiene la fecha actual, podrías utilizarla así o enviar cualquier fecha.

Cita:
En la parte de IF(DAYOFWEEK(CURDATE()) = 2, 'X', NULL), no entiendo la parte donde igualas a 2, entiendo que te refieres al numero de día de la semana, pero no entiendo muy bien esa parte.
DAYOFWEEK(date): Retorna el índice del día de la semana para date (1 = domingo, 2 = lunes, ..., 7 = sábado)

Al hacer la comparación con el número 2, me estoy refiriendo al día LUNES, es por eso que en UPDATE tengo algo similar:

Código:
L = IF(DAYOFWEEK('2012-10-26') = 2, 'X', L),
Lo mismo ocurre para todos los días de la semana:

Ahora bien estoy de acuerdo cuando dices "Lo que el cliente pida", sin embargo al cliente NO LE DEBE IMPORTAR COMO LO HAGAS, ese es tu trabajo... Creo que lo que quieres es simplemente un reporte visual, el cual podrías armar de muchas otras maneras más eficientes, observa este ejemplo:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +------+----------+------------+--------------------+
  3. | id   | empleado | fecha      | comentario         |
  4. +------+----------+------------+--------------------+
  5. |    1 | LEO      | 2012-10-20 | Reunion Bar        |
  6. |    2 | LEO      | 2012-10-22 | Hacer Reporte      |
  7. |    3 | LEO      | 2012-10-24 | Junta Prooveedores |
  8. |    4 | LEO      | 2012-10-26 | Pago Servicios     |
  9. |    5 | MAUK     | 2012-10-24 | Publicar Post      |
  10. |    6 | MAUK     | 2012-10-27 | Modificar BD       |
  11. +------+----------+------------+--------------------+
  12. 6 rows in set (0.00 sec)
  13.  
  14. mysql> SELECT
  15.     -> empleado,
  16.     -> MAX(IF(DAYOFWEEK(fecha) = 2, comentario, NULL)) Lunes,
  17.     -> MAX(IF(DAYOFWEEK(fecha) = 3, comentario, NULL)) Martes,
  18.     -> MAX(IF(DAYOFWEEK(fecha) = 4, comentario, NULL)) Miercoles,
  19.     -> MAX(IF(DAYOFWEEK(fecha) = 5, comentario, NULL)) Jueves,
  20.     -> MAX(IF(DAYOFWEEK(fecha) = 6, comentario, NULL)) Viernes,
  21.     -> MAX(IF(DAYOFWEEK(fecha) = 7, comentario, NULL)) Sabado,
  22.     -> MAX(IF(DAYOFWEEK(fecha) = 1, comentario, NULL)) Domingo
  23.     -> FROM tabla
  24.     -> GROUP BY empleado;
  25. 2 rows in set (0.00 sec)

Código:
+----------+---------------+--------+--------------------+--------+----------------+--------------+---------+
| empleado | Lunes         | Martes | Miercoles          | Jueves | Viernes        | Sabado       | Domingo |
+----------+---------------+--------+--------------------+--------+----------------+--------------+---------+
| LEO      | Hacer Reporte | NULL   | Junta Prooveedores | NULL   | Pago Servicios | Reunion Bar  | NULL    |
| MAUK     | NULL          | NULL   | Publicar Post      | NULL   | NULL           | Modificar BD | NULL    |
+----------+---------------+--------+--------------------+--------+----------------+--------------+---------+
Es decir, una cosa es cómo almacenas la información y otra muy distinta es cómo se la presentas al cliente. Mucho ojo con eso, el usuario ¿Qué es lo que está pidiendo?, si es sólo cuestión de presentación (qué creo sería el caso) es preferible que realices una consulta algo compleja a que la complejidad la dejes a la hora de insertar o modificar los datos. Pero bueno, eso también es cuestión de gustos.

Saludos
Leo.