2014-09-02 2 views
1

좋아, 내가하려는 것은 등록 된 모든 계정을 얻으려고하는 것입니다. 이것은 학교 밖에서의 첫 번째 실제 보고서이므로 경험이 없기 때문에 나와 양육하십시오.올바른 조인 가져 오기

나는 4 개의 테이블을 가지고 있습니다. 마지막 테이블 tcontract입니다

ID Contract_ID  IP Address   LoginID  Activity Step 
1  376877   192.111.4.100  [email protected]  1   Login 
2  376878   192.111.4.100  [email protected]  2   Enroll 
3  376879   192.111.4.100  [email protected]  3   LogOut 


ActivityStatus 
    1 
    1 
    2 

두 번째는 tlkCustPortalStatus

StatusID Portal Status 
1    Pass 
2    Fail 

세 번째 표는 tlkCustPortalActivities

ActivityID   Portal Activity 
1      Login 
2      Enroll 
3      Logout 

입니다 :

tAuditTracking은 다음과 같은 사용자 정보를 모두 가지고

Contract_ID  Account Number 
376877    34104253 
376878    35104252 
376879    31104257 

이것은 내 코드입니다. 나는 그 끔찍한 것을 알고 있지만 내 상급자를 돕고 있습니다. 팁이나 도움을 주시면 감사하겠습니다.

ALTER PROC spCustPortalEnrolledAccounts 


(@ENROLLED INT) 


As 
Begin 

SELECT A.ID, A.CONTRACT_ID, 'A.IP ADDRESS',A.DATE,A.LOGINID,A.ACTIVITY,A.STEP,A.ACTIVITYSTS,A.ADDITIONALDATA,B.ENROLL 
FROM tAuditTracking A 

JOIN tlkCustPortalActivities B ON B.ActivityID = A.Contract_id 
WHERE B.ActivityID = 2 

END 
GO 

EXEC spCustPortalEnrolledAccounts'2' 
+0

(등록을 위해,이 경우 2) 제공된 매개 변수 값 tAuditTracking에서 모든 계정을 얻기 위해 당신의 요구를 충족하기 위해 나타나지 않는다 당신의 질문에? B.ActivityID = 2 대신 B.ActivityID = @ENROLLED와 같은 쿼리에서 사용할 수 있습니다. –

+0

한 보고서에 등록 된 모든 계정에 대한 보고서를 작성하는 경우 매개 변수가 필요하지 않습니다. – user3753188

+0

여기에서 물어 본 질문과 같습니다. http://www.sqlservercentral.com/Forums/Topic1609686-391-1.aspx –

답변

0

몇 가지 문제. ram_sql 당신이 매개 변수를 사용하여, 심지어 값으로 절차를 EXECing하지만, 실제 저장 프로 시저에이 값이 하드

WHERE B.ActivityID = 2 

변경하는 것이 두 번째

WHERE B.ActivityID = @ENROLLED 

, 그리고으로 코딩되어있어 지적 더 중요하게, 나는 프로 시저를 실행하는 것만으로 행을 만들거나 거의 만들지 않을 것이라고 추측 할 수있다. 다음에 나오는 조인은 테이블에있는 값을 기반으로 거의 이해가되지 않습니다.

FROM tAuditTracking A 
JOIN tlkCustPortalActivities B ON B.ActivityID = A.Contract_id 

귀하의 A.Contract_ID 값은 6 개 자리 숫자 값입니다하지만 B.ActivityID 값은 한 자리 수치입니다.

다음 내용은 원하는 내용 일 가능성이 낮지 만 실제로 테이블 tcontract와 관계가있는 것으로 보이는 CONTRACT_ID에 참여하려고 시도하고 있다는 사실을 근거로하고 있지만 부족한 정보가 있습니다. tContractID를 통해 tlkCustPortalActivities에 가입하는 tAuditTrackng. 이 매개 변수 (@ENROLLED INT)이, 때 당신이 그것을 사용하지 않는 이유 그러나

SELECT A.ID, A.CONTRACT_ID, 'A.IPADDRESS',A.DATE,A.LOGINID,A.ACTIVITY, 
A.STEP,A.ACTIVITYSTS,A.ADDITIONALDATA,B.ENROLL 
FROM tAuditTracking A 
JOIN tlkCustPortalActivities B ON B.ActivityID = A.ActivityID 
WHERE B.ActivityID = @ENROLLED 
+0

도와 주셔서 감사합니다. 나는 당신이 지금 무엇을 의미하는지 이해하고 또한 코드에서 많은 것을 배웠습니다. 설명 해 주셔서 대단히 감사합니다. 여기에있는 대부분의 사람들과 같은 속물이 아닙니다. – user3753188

관련 문제