2010-10-18 186 views
0

我有一個表格,其中包含DATETIME時間戳記和ID字段。我想創建一個MySQL查詢(在我的PHP腳本中),該查詢從具有匹配ID的另一個表中進行選擇。我想進行某種連接,它將按照第一個表中的條目數量進行排序,並且時間戳記的時間標記時間超過24小時。所以基本上,如果第一個表中有30個條目的時間戳少於24小時,ID爲「334」,那麼我想從第二個表中選擇行號爲334的數據行。並且這應該在條目之前ID爲「234」,在過去的24小時內只有20個條目。ORDER BY時間戳<24小時的記錄數量(MySQL)

我希望這是明確的......我真的很難做到這一點,所以謝謝你的幫助。 :d

回答

0

嘗試:

Select b.ColA, b.ColB, b.ColC,-- etc. 
    Count(*) count 
From TableB b 
    Join TableA a 
    On a.Id = b.Id 
     And a.TimeStamp > getDate() - 1 
Group By b.ColA, b.ColB, b.ColC -- etc. 
Order By Count(*) Desc 

如果你也想看看從表B是在過去24小時內沒有時間戳,然後使用一個外行加入:

Select b.ColA, b.ColB, b.ColC,-- etc. 
    Count(*) count 
From TableB b 
    Left Join TableA a 
    On a.Id = b.Id 
     And a.TimeStamp > getDate() - 1 
Group By b.ColA, b.ColB, b.ColC -- etc. 
Order By Count(*) Desc 
+0

感謝您的迴應!我需要一段時間來嘗試一切並弄清楚它在做什麼,但是如果它適合我​​,我會讓你知道。再次感謝。 – RobHardgood 2010-10-18 02:48:18

2

用途:

SELECT a.*, 
     x.num 
    FROM TABLE_A a 
    JOIN (SELECT t.id, 
       COUNT(*) AS num 
      FROM TABLE_B t 
      WHERE t.timestamp BETWEEN DATE_SUB(NOW, INTERVAL 1 DAY) 
           AND NOW() 
     GROUP BY t.id) x ON x.id = a.id 
ORDER BY x.num DESC 
+0

感謝您的回覆!我也會試試這個,回到你身邊。 – RobHardgood 2010-10-18 02:48:59

+0

好像你在'ON'子句中丟失了'= a.id'。不是嗎? – zerkms 2010-10-18 03:01:08

+0

@zerkms:更正,thx。 – 2010-10-18 03:02:16