-3
にストアドプロシージャに助けが必要: は、私は4つのテーブル持っているSQL Server 2008の
ContentID(fk)
versionid(pk)
page
表2
表1
ContentID(pk)
ContentGUID
Description
SiteID
CategoryID
StartDate
DisplayName
ParentId
AssignedAuthors
AssignedEditors
CreatedBy
U.UserName
Created
ModifiedBy
UserName
Modified
Priority
を表3
apprhistroyid(pk)
verstionid(fk)
approvalstatusid(fk)
表4
approvalstatusid(pk)
statusname
テーブル1とテーブル4の合計詳細が必要です。私は、次の手順を試してみました。私はそれではなく、私は1つのテーブルとして、すべての戻り値をしたい1つのコンテンツID 1行あたりに返されROWAは、No.ofのnを取得しています
ALTER PROCEDURE [dbo].[DEV_SiteAdmin_Menu_GetItem_ALL_TEMP]
@SiteID Int
AS
DECLARE @VersionID int, @ApprovalStatusID int,@StatusName nvarchar(max),@ContentID Int,@Rowcount int
DECLARE @TEMP INT
--set @ApprovalStatusID=5;
--set @StatusName ='New';
set @Rowcount=(select max(ContentID)from dev_content where [email protected])
set @ContentID=(select min(ContentID) from dev_content where [email protected])
SET @[email protected]
IF(@Rowcount>=1)
BEGIN
WHILE @Rowcount>1
BEGIN
SET @[email protected]
set @ApprovalStatusID=
CASE
WHEN exists (SELECT VersionID from DEV_ContentVersion WHERE [email protected])
THEN (SELECT ApprovalStatusID FROM DEV_ApprovalStatus WHERE ApprovalStatusID=(SELECT ApprovalStatusID FROM DEV_ApprovalHistory WHERE VersionID=(SELECT VersionID from DEV_ContentVersion WHERE ContentID=(select ContentID from dev_content where [email protected] and [email protected])))) else 5 end
set @StatusName=
case
when (@ApprovalStatusID != 5)
then
(SELECT StatusName FROM DEV_ApprovalStatus WHERE [email protected])
else
'New'
end
SELECT DISTINCT [ContentID]
,[ContentGUID]
,[Description]
,[SiteID]
,[CategoryID]
,[StartDate]
,[DisplayName]
,[ParentId]
,[AssignedAuthors]
,[AssignedEditors]
,[CreatedBy]
,U.UserName 'CreatedUser'
,dbo.fnGetUserNamesFromUserIds([AssignedAuthors],',') 'Authors'
,dbo.fnGetUserNamesFromUserIds([AssignedEditors],',') 'Editors'
,[Created]
,[ModifiedBy]
,U1.UserName 'ModifiedUser'
,[Modified]
,[Priority]
,@ApprovalStatusID [ApprovalStatusID]
,@StatusName [StatusName]
FROM [DEV_Content] C
INNER JOIN dbo.aspnet_Users U ON U.UserId=C.CreatedBy
INNER JOIN dbo.aspnet_Users U1 ON U1.UserId=C.ModifiedBy
WHERE [email protected] AND [ContentID] = @TEMP
SET @TEMP= @TEMP+1
END
END
else
print 'error'
。
あなたはクエリが壊れていると思います - '@ ApprovalStatusID'への割り当てでは、純粋に' ContentID'に基づいて 'DEV_ContentVersion'を検索するつもりですが、' ContentID'と ' SiteID'?そして、私は同じステートメントで '@ ContentID'を使用していることに注意してください。これはあなたのループでインクリメントしている' @ TEMP'ではなく、一度だけ割り当てられます。それらが意図的であるかどうかを言うことができますか? –