Ver Mensaje Individual
  #4 (permalink)  
Antiguo 29/06/2008, 05:24
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Mostrar historial de rutas con SQL

yazo,
dinos con ejemplos de tus datos y con los campos que tienes, qué quieres buscar exactamente. Es decir, ponnos un ejemplo concreto de consulta con los datos que tienes, los resultados que quieres sacar y el modo de mostrarlos.
Lo que no entiendo es por qué separas año en una tabla y mes y día en otra. Lo lógico hubiera sido
tablaruta
idruta
detallesruta

tablarutashechas
fecharuta campo tipo DATE
idruta

En cuanto a tu problema con el concat, creo que se debe a que año, mes y día lo tienes como numéricos y para concatenarlos tienes que hacer un casting a varchar. Luego tendrás que hacer un cast a date de todo ello y luego convertir mediante UNIX_TIMESTAMP a timestamp para poder comparar con otro timestamp. Puede hacerse, pero contempla mi otra propuesta. Si finalmente quieres hacerlo como lo tienes, deberías hacer algo parecido a esto (considero que pones el número de mes y día con un sólo dígito cuando es inferior a 10). En tu caso, no es necesario recurrir a timestamp y puede hacerse con date.
Cita:
SELECT CAST(CONCAT(cast(rutas.anio as char), IF (fechas.mes < 10, CONCAT ('0',cast(fechas.mes as char)), cast(fechas.mes as char)), IF (did < 10, CONCAT ('0',cast(fechas.dia as char)), cast(fechas.dia as char))) AS DATE) AS FECHACOMPLETA from tutabla ... [cruce de tablas con INNER JOIN]... WHERE CAST(CONCAT(cast(rutas.anio as char), IF (fechas.mes < 10, CONCAT ('0',cast(fechas.mes as char)), cast(fechas.mes as char)), IF (did < 10, CONCAT ('0',cast(fechas.dia as char)), cast(fechas.dia as char))) AS DATE) <= CURDATE()

Última edición por jurena; 29/06/2008 a las 10:20