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

Problema con Natural Join y Jointure simple

Estas en el tema de Problema con Natural Join y Jointure simple en el foro de Mysql en Foros del Web. Hola amigos, aqui les dejo un problema que tengo con dos query, que a mi juicio, son la misma cosa, pero una me funciona y ...
  #1 (permalink)  
Antiguo 12/12/2014, 13:51
 
Fecha de Ingreso: noviembre-2014
Mensajes: 26
Antigüedad: 9 años, 4 meses
Puntos: 0
Pregunta Problema con Natural Join y Jointure simple

Hola amigos, aqui les dejo un problema que tengo con dos query, que a mi juicio, son la misma cosa, pero una me funciona y la otra no:

Código SQL:
Ver original
  1. SELECT t1.sessionDuration,
  2.        t1.fullsession,
  3.        mich_conversor(CAST(t2.Answered_Duration AS UNSIGNED)) AS Answered_Duration
  4. FROM table1 t1,table2 t2 WHERE t2.id_t1 = t1.id_t1;
  5.  
  6. --Error Code: 1292 Truncated incorrect INTEGER value: ''



Código SQL:
Ver original
  1. SELECT sessionDuration,
  2.        fullsession,
  3.        mich_conversor(CAST(Answered_Duration AS UNSIGNED)) AS Ansewered_Duration
  4. FROM   t1 NATURAL JOIN t2
  5.  
  6. /*-----------------------------------------------------
  7. sessionDuration--- fullsession---  Ansewered_Duration
  8. 00:00:04.09  ----       00:00:04.21  ----          00:00:14.60
  9. 00:00:00.00  -----       00:00:30.94     ----      00:00:30.62
  10.  
  11. */
Aqui un escenario de mi base de dato:

1.- mich_conversor_second: es una funcion que crée para lleva un numero entero formato TIME(2),
ella recibe como parametro un valor INT. Ejemplo: de 3600000 que es milisegundo 01:00:00.00
ella funciona bien, ya la probe



Answered_Duration: es una columna de tipo Varchar()--de la table t2
sessionDuration: es una columna de tipo time(2)--de la table t2
fullsession: es una columna de tipo(time)--de la table t1

mi relacion entre ls dos tablas es la siguiente:

t2 relacion de 1 a 1 con t1 (llave id_t1)
pero t2 y t1 tienen otras columnas en comun(test_id)
donde abria una tercer tabla llamada test donde hay una relacion de 1 a mucho con T1, T2

Porque mi primera query no me funciona, pa el caso estoy haciendo lo mismo....?

Última edición por micheldefrancisco; 12/12/2014 a las 19:51
  #2 (permalink)  
Antiguo 24/12/2014, 15:02
(Desactivado)
 
Fecha de Ingreso: enero-2013
Mensajes: 289
Antigüedad: 11 años, 3 meses
Puntos: 10
Respuesta: Problema con Natural Join y Jointure simple

Código MySQL:
Ver original
  1. SELECT t1.sessionDuration,
  2.        t1.fullsession,
  3.        mich_conversor(CAST(t2.Answered_Duration AS UNSIGNED)) AS Answered_Duration
  4. FROM table1 t1 INNER JOIN table2 t2 ON t2.id_t1 = t1.id_t1;

Última edición por gnzsoloyo; 24/12/2014 a las 16:23
  #3 (permalink)  
Antiguo 24/12/2014, 16:34
Avatar de 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: Problema con Natural Join y Jointure simple

El error recibido:
Código BASH:
Ver original
  1. Error Code: 1292 Truncated incorrect INTEGER value: ''
parece expresar que la función está recibiendo un valor ilícito, y además no estas realizando validación adecuadas en ella, como para recuperarte del fallo.
No queda claro el contexto del error, pero es probable que le valor del campo sea ilegal en algún registro.
UN "data truncated", siempre se da cuando hay datos perdidos porque el formato recibido es mayor al de conversión, pero sin ver los datos es imposible para nosotros saberlo.
Por otro lado, la verdad no entiendo por qué, si ese campo contendrá un valor de milisegundos, que es una magnitud escalar, lo estás poniendo en un VARCHAR. Eso simplemente no tiene ningún sentido... Es un desperdicio de espacio de almacenamiento, si tienes en cuenta que los números no se almacenan como cifras, sino como binarios...
Además, el definirlo como INT UNSIGNED, permitiría evitar por restricción de tipo, que se ingresasen valores negativos por error, cosa que con un VARCHAR es imposible de impedir, así como impedir que se almacenen letras o espacios vacíos (recordar que un espacio vacío no es NULL)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: join, natural, select, simple, tabla
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:10.