2013-12-16 35 views
-2

我的SELECT有什麼問題嗎?它應該計算每天不同IP的數量,然後計算總和。這是查詢:我的SELECT是否產生任何東西?

SELECT SUM(NumIpsPerDay) AS user_hits 
FROM 
    (SELECT DATE(tracking.timestamp) AS DayTrackCount, 
      COUNT(DISTINCT tracking.ip) AS NumIpsPerDay 
    FROM USER, 
     tracking 
    GROUP BY DATE(tracking.timestamp) 
    WHERE tracking.user_id = $user_id 
    GROUP BY $user_id LIMIT 1) 

我在看它,我覺得它可能是日期。我的SELECT有什麼不對嗎?

+1

你爲什麼覺得有什麼不對?什麼不起作用?你會得到什麼結果?你在期待什麼? –

+0

您可能想編輯您的問題 - 您的選擇是否產生任何東西?如果是這樣,它做了什麼,它不應該? – andrewsi

+0

我檢查了NumIpsPerDay,我沒有得到任何展示......所以我不那麼肯定是工作的權利 – user3102920

回答

1
SELECT SUM(NumIpsPerDay) AS user_hits 
FROM 
(
    SELECT DATE(tracking.timestamp) AS DayTrackCount, 
      COUNT(DISTINCT tracking.ip) AS NumIpsPerDay 
    FROM user, tracking 
    WHERE tracking.user_id = $user_id 
    GROUP BY DATE(tracking.timestamp) 
) x 
0

試試這個:

SELECT SUM(tab.NumIpsPerDay) AS user_hits 
FROM 
    (SELECT DATE(tracking.timestamp) AS DayTrackCount, 
    COUNT(DISTINCT tracking.ip) AS NumIpsPerDay 
    FROM USER, tracking 
    WHERE tracking.user_id = $user_id 
    GROUP BY DATE(tracking.timestamp)) as tab 

你爲什麼要擺在子查詢日期(tracking.timestamp)?

0

嗯,是的。您正在執行usertracking之間的cross join(笛卡爾產品)。但是,您沒有使用user表中的任何字段。你可能根本不需要桌子。

試試這個:

SELECT SUM(NumIpsPerDay) AS user_hits 
FROM (SELECT DATE(tracking.timestamp) AS DayTrackCount, 
      COUNT(DISTINCT tracking.ip) AS NumIpsPerDay 
     FROM tracking 
     WHERE tracking.user_id = $user_id 
     GROUP BY DATE(tracking.timestamp 
    ) t 
GROUP BY $user_id; 

另外:

  1. 子查詢沒有一個別名
  2. ,則不需要limitgroup by
  3. where條款來了
相關問題