sql – 具有WHERE条件和INNER JOIN的SELECT命令

我敢肯定我必须在这里犯一个微不足道的错误,但我一直在寻找这个问题的帮助,我所能找到的是关于条件INNER JOIN的信息.

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

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

进入控制台然后我得到返回的值.那么它必须与内部联接有关吗? < /编辑>

这个想法是:

>采取已经的内容
特色(DateFeatured不是NULL)
并将它们全部放入一个临时的

>从users表中获取用户名和图片,并使用UserID值将它们与临时表中的值相匹配.
>按照每个帖子的特征日期顺序对临时表进行排序.
>从表格中选择前六个条目

这是代码:

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

涉及两个数据表:

用户 – 存储所有用户及其信息的表.

> UserID INT
> FirstName varchar(50)
> LastName varchar(50)
>图片varchar(50)
>等……

ContribContent

> ContribContentID INT
> UserID INT
>类别INT
>标题varchar(100)
>文章varchar(MAX)
>图片varchar(50)
> DatePosted日期
> DateFeatured日期
>删除位

感谢任何可以提供帮助的人!

最佳答案 仅运行 –

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

如果您在第一时间返回任何数据,请查看您在哪里或您的加入时可能遇到的问题.我的猜测是加入,看看你是否有匹配的用户名加入…(提示:左连接可能是你的答案)

点赞