2011-01-05 93 views
0
SELECT  projectID, urlID, COUNT(1) AS totalClicks, projectPage, 
          (SELECT  COUNT(1) 
          FROM   tblStatSessionRoutes, tblStatSessions 
          WHERE  tblStatSessionRoutes.statSessionID = tblStatSessions.ID AND tblStatSessions.projectID = tblAdClicks.projectID AND 
                (tblStatSessionRoutes.leftPageID = tblAdClicks.projectPage OR 
                tblStatSessionRoutes.rightPageID = tblAdClicks.projectPage)) AS totalViews 
FROM   tblAdClicks 
GROUP BY projectID, urlID, projectPage 
ORDER BY projectID, urlID 

tblProjects有一個字段的用戶ID,我需要這個查詢只顯示記錄,其中的項目有用戶ID = 5,以便不顯示來自所有用戶的所有項目,所有的統計數據SQL幫助 - 通過用戶ID過濾

+0

你在哪裏使用上述查詢中的表tblProjects? – 2011-01-05 16:29:23

+0

我不是,但我在我的一天結束時有一個大腦放屁,並且無法弄清楚如何在 – 2011-01-05 16:30:33

+0

中找到它,那麼tblProjects.userID和其他tblAdClicks之間的關係是什麼? – Mikhail 2011-01-05 16:33:06

回答

2

天真:

SELECT  projectID, urlID, COUNT(1) AS totalClicks, projectPage, 
          (SELECT  COUNT(1) 
          FROM   tblStatSessionRoutes, tblStatSessions 
          WHERE  tblStatSessionRoutes.statSessionID = tblStatSessions.ID AND tblStatSessions.projectID = tblAdClicks.projectID AND 
                (tblStatSessionRoutes.leftPageID = tblAdClicks.projectPage OR 
                tblStatSessionRoutes.rightPageID = tblAdClicks.projectPage)) AS totalViews 
FROM   tblAdClicks 
WHERE projectID IN (SELECT projectID FROM tblProjects WHERE userID = 5) 
GROUP BY projectID, urlID, projectPage 
ORDER BY projectID, urlID 

但它可能是一個更好的加入。與往常一樣,檢查你的執行計劃

+0

乾杯!執行計劃是什麼意思? – 2011-01-05 16:34:07

+0

@Tom Gullen您使用的是什麼RDBMS?在SQL Server中,您可以查看估計的和實際的執行計劃是SSMS。 – 2011-01-05 16:40:58

1

好了,我不知道你有數據的結構,但如果不出意外,可以隨時加入到下面的子查詢:

select projectID from tblProjects where userID=5 

至於你應該使用什麼列來加入,我不能告訴你,因爲我不知道你的數據的具體情況。

+0

這將返回'NULL'或'5' – Mikhail 2011-01-05 16:37:02

+0

糟糕,我的意思是projectID。固定! – 2011-01-05 16:38:27