У меня есть 4 таблицы:
Table1
ContentID(pk)
ContentGUID
Description
SiteID
CategoryID
StartDate
DisplayName
ParentId
AssignedAuthors
AssignedEditors
CreatedBy
U.UserName
Created
ModifiedBy
UserName
Modified
Priority
Table2
ContentID(fk)
versionid(pk)
page
Таблица3
apprhistroyid(pk)
verstionid(fk)
approvalstatusid(fk)
1012 * Таблица 4 *
approvalstatusid(pk)
statusname
Я хочу получить подробную информацию о table1 и table4. Я пробовал следующую процедуру:
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 SiteID=@SiteID)
set @ContentID=(select min(ContentID) from dev_content where SiteID=@SiteID)
SET @TEMP=@ContentID
IF(@Rowcount>=1)
BEGIN
WHILE @Rowcount>1
BEGIN
SET @Rowcount=@Rowcount-1
set @ApprovalStatusID=
CASE
WHEN exists (SELECT VersionID from DEV_ContentVersion WHERE ContentID=@TEMP)
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 ContentID=@ContentID and SiteID=@SiteID)))) else 5 end
set @StatusName=
case
when (@ApprovalStatusID != 5)
then
(SELECT StatusName FROM DEV_ApprovalStatus WHERE ApprovalStatusID=@ApprovalStatusID)
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 C.SiteID=@SiteID AND [ContentID] = @TEMP
SET @TEMP= @TEMP+1
END
END
else
print 'error'
Где я получаю номер строки, то есть он возвращает на 1 содержимое 1 строки, вместо этого я хочу, чтобы все возвращаемые значения были в одной таблице.