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

Ayuda No puedo con consulta

Estas en el tema de Ayuda No puedo con consulta en el foro de Mysql en Foros del Web. Tengo el siguiente problema tengo 2 tablas articulos y seguimientos relacionados con id un articulo puede tener varios seguimientos, en seguimientos tengo campo fecha, bueno ...
  #1 (permalink)  
Antiguo 29/09/2010, 09:22
Avatar de LuZBinG  
Fecha de Ingreso: enero-2008
Mensajes: 407
Antigüedad: 16 años, 2 meses
Puntos: 5
De acuerdo Ayuda No puedo con consulta

Tengo el siguiente problema tengo 2 tablas articulos y seguimientos relacionados con id

un articulo puede tener varios seguimientos, en seguimientos tengo campo fecha,
bueno lo que quiero es obtener el seguimiento con la fecha mas actual ademas si tiene 7 dias la fecha con la fecha actual ya caducoel seguimiento ejemplo:
esto es lo que tengo

SELECT MAX(seguimiento.fecha) AS MAXIMAS
FROM articulos
inner JOIN seguimiento ON articulos.id = seguimiento.id_articulo
where datediff('fecha_actual',seguimiento.fecha)>7
group by articulo.id

pero no funciona porque datediff no aplica MAX(seguimiento.fecha) AS MAXIMAS
si yo pudiera agregar en el query a si si funcionaria datediff('fecha_actual',max(seguimiento.fecha))>7

pero me da error "Invalid use of group function"
como puedo aplicar datediff a las fechas mas altas del los seguimientos

salu2 espero me entiendan y me echen la mano
__________________
LuZbIng
  #2 (permalink)  
Antiguo 29/09/2010, 10:40
 
Fecha de Ingreso: abril-2010
Mensajes: 23
Antigüedad: 14 años
Puntos: 3
Respuesta: Ayuda No puedo con consulta

¿Porqué no lo divides en varias consultas? (y ten cuidado con el max y el group by, como metas tablas entre media puedes liarla, lo mejor es imaginar las tuplas generadas por separado y luego combinarlas)

Ejemplo (que manía tenéis de no llamar a los id's con nombres orientativos, y no poner alias a las tablas :P):

Consulta 1 -> conseguimos solo los artículos que tienen segumientos y su fecha máxima, como pusiste tu
select art.id,max(seg.fecha) as fecha_ultima
from articulo art inner join seguimientos seg on art.id = seg.id_articulo
group by articulo.id

Consulta 2-> englobamos la Consulta 1 para filtrarla por fechas
Select tabla.id FROM (
Consulta 1
) as tabla
where DATEDIFF(CURDATE(),tabla.fecha_ultima) >7

con lo que te quedaría:

Select tabla.id FROM (
select art.id,max(seg.fecha) as fecha_ultima
from articulo art inner join seguimientos seg on art.id = seg.id_articulo
group by articulo.id
) as tabla
where DATEDIFF(CURDATE(),tabla.fecha_ultima) >7

y te da todos los aid's de rticulos con ultimo seguimiento hace más de 7 días


Espero que te ayude
  #3 (permalink)  
Antiguo 29/09/2010, 12:13
Avatar de LuZBinG  
Fecha de Ingreso: enero-2008
Mensajes: 407
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Ayuda No puedo con consulta

bien tambien a si funciona !!!

tambien habia probado asi despues del group by
HAVING datediff(mifecha,max(seguimiento.fecha))>7

y funciona trae lo que quiero pero no se si es factible

pero me quedo con la tuya gracias excelente :)

gracias una pregunta tonta: que ventajas tengo ademas de ahorrarme letras usando alias ?

salu2
__________________
LuZbIng
  #4 (permalink)  
Antiguo 30/09/2010, 05:50
 
Fecha de Ingreso: abril-2010
Mensajes: 23
Antigüedad: 14 años
Puntos: 3
Respuesta: Ayuda No puedo con consulta

que las consultas quedan mucho más bonitas XDDD

Sinceramente, no se gana ni se pierde eficiencia, pero cuando hagas consultas de una hoja de grande, verás que a ti te ayudan mucho a identificar las tablas temporales que creas en combinación de otras,organizarte, escribir menos, etc...

Me alegra haberte sido de ayuda :)

Un saludo!;
  #5 (permalink)  
Antiguo 30/09/2010, 11:46
Avatar de LuZBinG  
Fecha de Ingreso: enero-2008
Mensajes: 407
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Ayuda No puedo con consulta

Cita:
que las consultas quedan mucho más bonitas XDDD
:S
jajaja gracias salu2
__________________
LuZbIng

Etiquetas: Ninguno
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 13:44.