Ver Mensaje Individual
  #11 (permalink)  
Antiguo 13/07/2016, 12:09
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Error en función MySql

Seguro, está pensando como programador, y eso no está bien.

Bueno, ejemplificando, lo que quisiera que haga es esto:
Código MySQL:
Ver original
  1. mysql> CREATE TABLE datos (
  2.     ->     salida_num INT UNSIGNED PRIMARY KEY,
  3.     ->     fecha DATE
  4.     -> );
  5. Query OK, 0 rows affected (0.08 sec)
  6.  
  7. mysql> insert into datos
  8.     -> values
  9.     -> (1, str_to_date('20/01/2016', '%d/%m/%Y')),
  10.     -> (2, str_to_date('25/01/2016', '%d/%m/%Y')),
  11.     -> (3, str_to_date('01/03/2016', '%d/%m/%Y')),
  12.     ->  (4, str_to_date('02/03/2016', '%d/%m/%Y')),
  13.     ->  (5, str_to_date('03/03/2016', '%d/%m/%Y')),
  14.     ->  (6, str_to_date('04/03/2016', '%d/%m/%Y')),
  15.     ->  (7, str_to_date('05/03/2016', '%d/%m/%Y')),
  16.     ->  (8, str_to_date('05/03/2016', '%d/%m/%Y')),
  17.     ->  (9, str_to_date('05/03/2016', '%d/%m/%Y')),
  18.     ->  (10, str_to_date('05/03/2016', '%d/%m/%Y')),
  19.     ->  (11, str_to_date('06/03/2016', '%d/%m/%Y')),
  20.     ->  (12, str_to_date('07/03/2016', '%d/%m/%Y')),
  21.     ->  (13, str_to_date('08/03/2016', '%d/%m/%Y')),
  22.     ->  (14, str_to_date('09/04/2016', '%d/%m/%Y')),
  23.     ->  (15, str_to_date('10/04/2016', '%d/%m/%Y')),
  24.     ->  (16, str_to_date('11/04/2016', '%d/%m/%Y')),
  25.     ->  (17, str_to_date('01/05/2016', '%d/%m/%Y')),
  26.     ->  (18, str_to_date('02/05/2016', '%d/%m/%Y')),
  27.     ->  (19, str_to_date('03/05/2016', '%d/%m/%Y')),
  28.     ->  (20, str_to_date('04/05/2016', '%d/%m/%Y'));
  29. Query OK, 20 rows affected (0.02 sec)
  30. Records: 20  Duplicates: 0  Warnings: 0
  31.  
  32. mysql>
  33. mysql>  SELECT
  34.     ->     MIN(DATEDIFF(dt1.fecha, dt2.fecha)) minimo
  35.     -> FROM
  36.     ->     datos dt1
  37.     ->         INNER JOIN
  38.     ->     datos dt2 ON dt1.salida_num = dt2.salida_num + 1;
  39. +--------+
  40. | minimo |
  41. +--------+
  42. |      0 |
  43. +--------+
  44. 1 row in set (0.00 sec)

Donde si quiero la mayor diferencia entre dos fechas, sería:
Código MySQL:
Ver original
  1. mysql>  SELECT
  2.     ->     MAX(DATEDIFF(dt1.fecha, dt2.fecha)) maximo
  3.     -> FROM
  4.     ->     datos dt1
  5.     ->         INNER JOIN
  6.     ->     datos dt2 ON dt1.salida_num = dt2.salida_num + 1;
  7. +--------+
  8. | maximo |
  9. +--------+
  10. |     36 |
  11. +--------+
  12. 1 row in set (0.00 sec)

Claro que para que esta lógica funcione, no tiene que haber saltos en la numeración de la PK... dado que si los hay no devolverá datos allí.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)