2011-01-05 2 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 테이블을 어디에 사용하고 있습니까? –

+0

저는 아니지만 하루가 끝날 무렵 뇌의 방귀가있어 –

+0

에 들어가는 방법을 알아낼 수 없으므로 tblProjects.userID와 다른 tblAdClicks의 관계는 무엇입니까? – Mikhail

답변

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

건배! 실행 계획은 무엇을 의미합니까? –

+0

@Tom Gullen RDBMS는 무엇을 사용하고 있습니까? SQL Server에서 예상 실행 계획과 실제 실행 계획을 볼 수 있습니다. –

1

잘 확인하지만, 아무것도, 당신은 항상 다음 하위 쿼리에 가입 할 수 있습니다에 관해서는

select projectID from tblProjects where userID=5 

참여를 위해 사용해야하는 열 (들)은 귀하의 데이터에 대한 구체적인 내용을 알지 못하기 때문에 실제로 말할 수 없습니다.

+0

이것은 NULL 또는 5를 반환합니다. – Mikhail

+0

죄송합니다. 나는 projectID를 의미했습니다. 결정된! –