2012-06-17 53 views
2

我有多個網站在單個數據庫上運行。計數登錄次數超過一次的唯一用戶數

我的問題有關的表結構就像這裏:

USER 
    - UserID 
WEBSITE 
    - WebsiteID 
     - WebsiteName 
LOGINRECORD 
    - UserID 
    - WebsiteID 
    - LoginDate 

我想算其中的loggedIn比那些由webssite更多的獨立用戶數。

Website   NumberofUserLoggedinMorethanOnce 
abc.com      15 
def.com      25 
+0

使用MySQL存儲會話,然後'mysql_num_rows()'的網站你想要的。 –

+1

@Frederick Marcoux:這真的是可怕的建議 – zerkms

+0

謝謝你的所有答案。我只是嘗試第一個,它運作良好,所以我接受它:)我upvoted所有答案:) – gandil

回答

5

編輯:我誤解了這個問題。這應該是它:

SELECT WEBSITE.WebsiteName, count(*) 
FROM WEBSITE 
INNER JOIN (
SELECT UserID, WebsiteID, count(*) FROM LOGINRECORD 
GROUP BY UserID, WebsiteID 
HAVING count(*) > 1) AS T1 ON t1.WebsiteID = WEBSITE.WebsiteID 
GROUP BY WEBSITE.WebsiteName 
+0

由網站+用戶組,不只是用戶(並使用嵌套查詢) – zerkms

+0

克勞斯Byskov霍夫曼,這不是我想要的。我想獲得每個網站多次登錄的用戶數量。 – gandil

+0

@ q07,我知道,我誤解了。我已經更新了我的回答 –

3
SELECT WebsiteID, 
     COUNT(*) AS cnt 
    FROM (SELECT WebsiteID 
      FROM LOGINRECORD 
     GROUP BY WebsiteID, 
       UserID 
     HAVING count(*) > 1) x 
GROUP BY WebsiteID 
+0

您沒有網站名稱;-P –

+1

@Klaus Byskov Hoffmann:這是OP的作業;-) – zerkms

+0

哈哈好了!我會給你+1作業作業;-) –

1

這是未經測試,但給這個一展身手 -

select websitename, count(*) 
from website 
inner join 
(
select userid, websiteid, count(*) 
from loginrecord 
inner join website on loginrecord.websiteid = website.websiteid 
group by userid, websiteid 
having count(*) > 1 
) tbl 
on tbl.websiteid = website.websiteid 
group by websitename