2010-04-26 10 views
6

Tengo 3 tablas con una columna en cada una que se relaciona con una ID por fila. Estoy buscando una consulta de declaración SQL que verifique todas las 3 tablas para cualquier fila en las últimas 24 horas (86400 segundos) he almacenado marcas de tiempo en cada tabla debajo de la columna time.consulta SQL compleja ... 3 tablas y necesita las más populares en las últimas 24 horas usando marcas de tiempo

Después de recibir esta consulta, podré hacer el siguiente paso, que es comprobar para ver cuántos de los identificadores son recurrentes para poder ordenar por los más populares en la matriz y limitarlos a los 5 principales ...

¡Todas las ideas son bienvenidas! :)

Gracias de antemano.

Stefan

Respuesta

10
SELECT id, COUNT(*) AS cnt 
FROM (
     SELECT id 
     FROM table1 
     WHERE time >= NOW() - INTERVAL 1 DAY 
     UNION ALL 
     SELECT id 
     FROM table2 
     WHERE time >= NOW() - INTERVAL 1 DAY 
     UNION ALL 
     SELECT id 
     FROM table3 
     WHERE time >= NOW() - INTERVAL 1 DAY 
     ) q 
GROUP BY 
     id 
ORDER BY 
     cnt DESC 
LIMIT 5 
+1

Mierda. He oído hablar de los ninjas de MySQL, pero no creo haber encontrado ninguno. – dclowd9901

+0

Simplemente probando esto :) ¡Dos segundos! –

+0

No ha dado ningún error, pero no estoy obteniendo ningún resultado? Utilizo la función php time() para almacenar la marca de tiempo en la columna de tiempo de cada tabla ... hmmm ¿alguna idea? ¡Gracias de nuevo! Esta consulta resumirá qué identificador tiene la mayor cantidad de ocurrencias en las últimas 24 horas con relación a su marca de tiempo y luego devuelve las 5 principales correctas? –

Cuestiones relacionadas