Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/06/2011, 05:03
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Agupar por dos columnas, un poco diferente

Código MySQL:
Ver original
  1. SELECT sbc.ID as ID, sbc.FECHA as Fecha,Sbc.tipo
  2. FROM (SELECT f.ID as ID, f.FECHA as Fecha, 1 as Tipo
  3.               FROM fotos f
  4.               WHERE f.ID_USUARIO=1
  5.               ORDER BY f.FECHA DESC LIMIT 5
  6.            UNION ALL
  7.              SELECT fe.ID_FOTO as ID, fe.FECHA as Fecha, 0 as Tipo
  8.                 FROM fotos_etiquetas fe
  9.                 WHERE fe.ID_USUARIO=1
  10.                 ORDER BY fe.FECHA DESC LIMIT 5) as Sbc
  11. ORDER BY Sbc.fecha DESC,Sbc.tipo ASC

Creo?

es decir primero buscas las 5 ultimas subidas por el usuario y les agregas un campo tipo=1, luego buscas las ultimas 5 donde el usuario ha sido etiquetado y les agregas tipo=0, unes los dos resultados los reordenas por fecha y tipo y eliges los ultimos 5 ....

Es posible que se te repita una foto puesto ya que si la ha subido y ha sido etiquetado la foto puede estar en los dos conjuntos....

Para evitar eso debes decidir que hay que hacer eliminar las que esten en el primer grupo o en el segundo...

Código MySQL:
Ver original
  1. SELECT sbc.ID as ID, sbc.FECHA as Fecha,Sbc.tipo
  2. FROM (SELECT f.ID as ID, f.FECHA as Fecha, 1 as Tipo
  3.               FROM fotos f
  4.               WHERE f.ID_USUARIO=1
  5.               AND f.ID NOT IN (SELECT fe1.ID_FOTO
  6.                                             FROM fotos_etiquetas fe1
  7.                                             WHERE fe1.ID_USUARIO=1
  8.                                             ORDER BY fe1.FECHA DESC LIMIT 5)
  9.               ORDER BY f.FECHA DESC LIMIT 5
  10.            UNION ALL
  11.              SELECT fe.ID_FOTO as ID, fe.FECHA as Fecha, 0 as Tipo
  12.                 FROM fotos_etiquetas fe
  13.                 WHERE fe.ID_USUARIO=1
  14.                 ORDER BY fe.FECHA DESC LIMIT 5) as Sbc
  15. ORDER BY Sbc.fecha DESC,Sbc.tipo ASC

Así eliminados de las subidas las que ya esten en las etiquetadas... seguiremos teniendo un conjunto de mas de 5 fotos con lo que seguro que funciona...

tipo solo sirve para ordenar no para saber si la foto la ha subido o no un usuario... puesto que si la ha subido y ha sido etiquetado en ella saldrà con tipo = 0
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 17/06/2011 a las 05:26