2010-11-01 42 views
4

我确信我必须在这里犯一个小错误,但我一直在寻找帮助解决这个问题,我能找到的所有信息都是有条件的INNER JOIN。带有WHERE条件和INNER JOIN的SELECT命令

<编辑>问题是这个存储过程根本没有返回任何东西。如果我只输入:

SELECT TOP (6) UserID, Category, Title, SUBSTRING(Article, 0, 200) AS Summary, DatePosted 
FROM ContribContent 
WHERE (DateFeatured IS NOT NULL) 
ORDER BY DateFeatured DESC 

进入控制台,然后返回值。所以它必须与内部连接有关? < /编辑>

的想法是:

  1. 走哪已精选 内容(DateFeatured为NOT NULL) ,并把它所有到一个临时 表
  2. 得到用户名和图片,并使用UserID值将它们与临时表中的值进行匹配。
  3. 按照每个帖子的特色日期顺序对临时表进行排序。
  4. 从表中选择

这里前六名项是代码:

ALTER PROCEDURE [dbo].[admin_GetFeaturedContrib] 
AS 
BEGIN 

DECLARE @FeaturedContrib TABLE (
UserID INT, 
Category INT, 
Title varchar(100), 
Summary varchar(200), 
DatePosted date, 
FirstName varchar(50), 
LastName varchar(50), 
Picture varchar(100) 
) 

INSERT INTO @FeaturedContrib 
SELECT TOP 6 ContribContent.UserID, ContribContent.Category, ContribContent.Title,  SUBSTRING(ContribContent.Article, 0, 200) AS Summary, ContribContent.DatePosted,  Users.FirstName, Users.LastName, Users.Picture 
FROM ContribContent 
INNER JOIN Users 
ON ContribContent.UserID = Users.UserID 
WHERE ContribContent.DateFeatured IS NOT NULL 
ORDER BY ContribContent.DateFeatured DESC 

SELECT * FROM @FeaturedContrib 
END 

主要涉及两个数据表:

用户 - 表中存储的所有用户和他们的信息。

  • 用户ID INT
  • 姓VARCHAR(50)
  • 姓氏VARCHAR(50)
  • 图片VARCHAR(50)
  • 等...

ContribContent

  • ContribContentID INT
  • 用户ID INT
  • 类别INT
  • 标题为varchar(100)
  • 文章VARCHAR(MAX)
  • 图片VARCHAR(50)
  • DatePosted日期
  • DateFeatured日期
  • 删除位

感谢给任何人谁可以帮忙!只有

+5

而问题是......? – 2010-11-01 17:02:54

+1

Drumroll ........ – Vishal 2010-11-01 17:07:34

+0

哇,这是我的愚蠢..对不起啊哈,只是做了一个编辑。 – mitchellbutler 2010-11-01 17:08:02

回答

2

运行 -

SELECT TOP 6 ContribContent.UserID, ContribContent.Category, ContribContent.Title,  SUBSTRING(ContribContent.Article, 0, 200) AS Summary, ContribContent.DatePosted,  Users.FirstName, Users.LastName, Users.Picture 
FROM ContribContent 
INNER JOIN Users 
ON ContribContent.UserID = Users.UserID 
WHERE ContribContent.DateFeatured IS NOT NULL 
ORDER BY ContribContent.DateFeatured DESC 

看你得到什么可能是一个问题与您的Where或您join仔细看你是否有返回摆在首位的任何数据。我的猜测是join看看你是否有匹配的用户名你加入...(提示:左加入也许你的答案)

+0

不,没有数据返回。为了回应班尼斯特的评论,我只写了一个快速编辑。如果您在编辑中签出代码,则该代码正在返回值。那么内连接有什么问题吗? – mitchellbutler 2010-11-01 17:10:17

+0

哈哈完美,左连接工作,但返回null列加入列。我决定检查用户表,并找出用户标识由于某种原因从5开始。唯一有特色的内容有一个UserID值为2.我很难过,这是一个愚蠢的错误。我从另一个开发人员手中接管了这个网站,所以我不知道。非常感谢。 – mitchellbutler 2010-11-01 17:16:28

+0

此外,可能希望使用'Isnull(ContribContent.UserID,0)作为UserId'并为您的需要分配一个值(在这种情况下为'0')。很高兴能帮到您! – Vishal 2010-11-01 17:23:46