2014-09-02 44 views
1

好的,我想要做的是我試圖獲取所有已註冊的帳戶。這是我在校外的第一份實際報告,所以請和我一起裸露因爲我沒有經歷過。獲得正確的加入

我有4張桌子。

的tAuditTracking擁有所有用戶的信息如下的:

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 

最後一個表是tcontract

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

爲什麼這個參數(@ENROLLED INT),當你不使用它在你的查詢中?你可以在你的查詢中使用它,比如Where B.ActivityID = @ENROLLED而不是B.ActivityID = 2 – 2014-09-02 16:39:14

+0

我想如果我只是爲一個報告中的所有登記帳戶創建報告,我甚至不需要參數。 – user3753188 2014-09-02 16:43:01

+0

看起來像你在這裏問的同一個問題。 http://www.sqlservercentral.com/Forums/Topic1609686-391-1.aspx – 2014-09-02 17:09:16

回答

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值是單數位數字。

雖然接下來的事情不太可能是你想要的,而且我基於你試圖加入CONTRACT_ID的事實,這似乎與表tcontract有關係,但是沒有足夠的信息可以從tAudit通過tcontractTrackng加入ContractID到tlkCustPortalActivities。然而,它似乎以滿足您的需求,以從所提供的參數值tAuditTracking獲取所有帳戶(在這種情況下,2就讀)

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 2014-09-02 18:28:58