Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Complex SQL query... 3 tables and need the most popular in the last 24 hours using timestamps

I have 3 tables with a column in each which relates to one ID per row. I am looking for an sql statement query which will check all 3 tables for any rows in the last 24 hours (86400 seconds) i have stored timestamps in each tables under column time.

After I get this query I will be able to do the next step which is to then check to see how many of the ID's a reoccurring so I can then sort by most popular in the array and limit it to the top 5...

Any ideas welcome! :)

Thanks in advance.

Stefan

like image 311
Stefan P Avatar asked Apr 26 '10 14:04

Stefan P


1 Answers

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
like image 163
Quassnoi Avatar answered Sep 21 '22 23:09

Quassnoi