我正在尝试获取所有已注册的帐户。
我有4张桌子。
tAuditTracking包含以下所有用户信息:
ID Contract_ID IP Address LoginID Activity Step
1 376877 192.111.4.100 sam@gmail 1 Login
2 376878 192.111.4.100 Bob@gmail 2 Enroll
3 376879 192.111.4.100 Tom@gmail 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 :(得分:0)
一些问题。 ram_sql指出你使用了一个参数甚至用一个值来执行过程,但在实际的存储过程中,这个值被硬编码为
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有关系,但是信息不足从tAuditTrackng通过tcontract加入ContractID到tlkCustPortalActivities。但是,它似乎满足了您使用提供的参数值从tAuditTracking获取所有帐户的需求(在这种情况下,ENROLLED为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