Hi ,
I have  a stored Procedure which do Sorting and Paging like the Sorting Custom Paged Results of of Scott Michell . I have two tables: Article and Category ,My StoredProcedure works fine for Article Table , But i want add a field of Category into queyr (Inner Join I mean )
Actually I can't do  like the Scott Michell has done , Because there are some field that are similar at both Tables .(When i do like Scott all the time i get "Ambiguous Column Error")
My StoredProcedure without Inner join is :
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[sp_Articles_SelectByCategoryId]
 @CategoryId int,
 @startRowIndex int = -1,
 @maximumRows int = -1,
 @sortExpression nvarchar(50),
 @recordCount int = NULL OUTPUT
AS
IF (@recordCount IS NOT NULL)
 BEGIN
  SET @recordCount = (SELECT COUNT(*) FROM [dbo].[Articles] WHERE [CategoryId] = @CategoryId
 )
  RETURN
 END
IF LEN(@sortExpression) = 0
   SET @sortExpression = 'Id'
DECLARE @sql nvarchar(4000)
SET @sql = 
'SELECT
 [Id],
 [AddedDate],
 [AddedBy],
 [CategoryId],
 [Title],
 [Abstract],
 [Body]
FROM
 (SELECT 
 [Id],
 [AddedDate],
 [AddedBy],
 [CategoryId],
 [Title],
 [Abstract],
 [Body],
ROW_NUMBER() OVER(ORDER BY ' + @sortExpression + ') as RowNum
 FROM  [dbo].[Articles]
 WHERE CategoryId = ' + CONVERT(nvarchar(10), @CategoryId) + '
 ) as CategoryIdInfo
 WHERE 
 ((RowNum between (' + CONVERT(nvarchar(10), @startRowIndex) + ') AND ' + CONVERT(nvarchar(10), @startRowIndex) + ' + ' + CONVERT(nvarchar(10), @maximumRows) + ' - 1) 
   OR ' + CONVERT(nvarchar(10), @startRowIndex) + ' = -1 OR ' + CONVERT(nvarchar(10), @maximumRows) + ' = -1)'
  -- Execute the SQL query
  EXEC sp_executesql @sql
--endregion
My Category Table is :
CREATE TABLE [dbo].[Category](
 [Id] [int] IDENTITY(1,1) NOT NULL,
 [AddedDate] [datetime] NOT NULL,
 [AddedBy] [nvarchar](250) COLLATE Arabic_CI_AS NOT NULL,
 [Title] [nvarchar](50) COLLATE Arabic_CI_AS NOT NULL,
 [Importance] [int] NOT NULL,
 [Description] [nvarchar](300) COLLATE Arabic_CI_AS NULL,
 [ImageUrl] [nvarchar](50) COLLATE Arabic_CI_AS NULL,
 CONSTRAINT [PK_Category] PRIMARY KEY CLUSTERED 
(
 [Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
My Article Table :
CREATE TABLE [dbo].[Articles](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [AddedDate] [datetime] NOT NULL,
    [AddedBy] [nvarchar](250) COLLATE Arabic_CI_AS NOT NULL,
    [CategoryId] [int] NOT NULL,
    [Title] [nvarchar](255) COLLATE Arabic_CI_AS NOT NULL,
    [Abstract] [nvarchar](4000) COLLATE Arabic_CI_AS NULL,
    [Body] [nvarchar](max) COLLATE Arabic_CI_AS NOT NULL,
    [ReleaseDate] [datetime] NULL,
    [ExpireDate] [datetime] NULL,
    [Approved] [bit] NOT NULL,
    [Listed] [bit] NOT NULL,
    [CommentEnabled] [bit] NOT NULL,
    [OnlyForMembers] [bit] NOT NULL,
    [ViewCount] [int] NOT NULL,
    [Votes] [int] NOT NULL,
    [TotalRating] [int] NOT NULL,
 CONSTRAINT [PK_Articles] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
I don't know how to add The "Title" Column of "Category" Table into Query .
if my Category table hadn't similar fields, surely this query workes :
DECLARE @sql nvarchar(4000)
SET @sql = 
'SELECT
    [Id],
    [AddedDate],
    [AddedBy],
    [CategoryId],
    [Title],
    [Abstract],
    [Body],
    ArticleTitle
FROM
    (SELECT 
    [Id],
    [AddedDate],
    [AddedBy],
    a.[CategoryId],
    [Title],
    [Abstract],
    [Body],
    b.Title as CategoryTitle ,
ROW_NUMBER() OVER(ORDER BY ' + @sortExpression + ') as RowNum
    FROM  [dbo].[Articles] a INNER JOIN Category b on a.CategoryId = b.Id
    WHERE a.CategoryId = ' + CONVERT(nvarchar(10), @CategoryId) + '
    ) as CategoryIdInfo
If you want to Test you can download the Attachment(Tables and StoredProcedure) Thank you