Ver Mensaje Individual
  #7 (permalink)  
Antiguo 07/06/2009, 18:14
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, 5 meses
Puntos: 2658
Respuesta: Ordenar consulta

A pesar de tu afirmación, tengo problemas para entender cómo es posible que esto:
Código sql:
Ver original
  1. SELECT src, START+INTERVAL LENGTH SECOND AS Salida
  2. FROM cdr
  3. WHERE length>0
  4. ORDER BY Salida DESC
  5. LIMIT 10
funcione por las siguientes causas:
1. INTERVAL solo es una función de comparación (INTERVAL(param1, param2, param3, ...)) cuya función devuelve el parámetro mayor del conjunto o sino -1.
2. INTERVAL como cláusula de una función de fecha tal como la describes debería ser:
Código sql:
Ver original
  1. DATE_ADD(START, INTERVAL xxx SECOND)
3. No se podría usar LENGTH como nombre de campo o de variable porque es una palabra reservada por ser la función de caracteres LENGTH(x, y), que devuelve los y caracteres desde la izquierda de x.
4. No se puede usar START por ser sentencia de inicio de transacciones (START TRANSACTION), y por lo tanto también es palabra reservada.

Adicionalmente, el primer ejemplo contenía como error que estabas usando un alias como campo del WHERE, que MySQL no admite.

Por estas razones, que puedo sostener manual en mano, es que como decía, es imposible que esa sentencia opere como dices porque no cumple con la sintaxis:
1. No contiene la función DATE_ADD() que supondría que estás invocando.
2. Contiene palabras reservadas como nombres de campo sin la resolución adecuada por medio de acentos (`).

Si puedes explicarme cómo es posible que funcione te lo agradecería.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 07/06/2009 a las 18:33