sql - 带有 WHERE 条件和 INNER JOIN 的 SELECT 命令

标签 sql stored-procedures inner-join where

我确定我在这里一定犯了一个小错误,但我一直在寻找解决这个问题的帮助,我能找到的只是关于条件 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 不为空)
    并将其全部放入临时
  • 从 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
    

    涉及到两个数据表:

    用户 - 存储所有用户及其信息的表。
  • 用户 ID INT
  • 名字 varchar(50)
  • 姓氏 varchar(50)
  • 图片 varchar(50)
  • 等等...

  • 贡献内容
  • ContribContentID INT
  • 用户 ID INT
  • 类别 INT
  • 标题 varchar(100)
  • 文章 varchar(MAX)
  • 图片 varchar(50)
  • 发布日期
  • 日期精选日期
  • 删除位

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

    最佳答案

    仅运行 -

    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看看您是否有匹配的用户 ID 加入...( 提示 : Left join 也许是你的答案)

    关于sql - 带有 WHERE 条件和 INNER JOIN 的 SELECT 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4071140/

    相关文章:

    mysql - 如何使用MySQL查询获取年龄小于50岁的女性候选人的记录总和

    mysql - 仅当父级存在时才加入父级名称

    MySQL内连接检索表1,即使表2不匹配ID

    c++ - const char 到 SQLCHAR 错误

    具有可变表名并检索丢失记录的 MySQL 存储过程

    asp.net - 如何在 SQL Server 的 log4net 配置中使用存储过程进行日志记录

    sql - 只显示有 MOrderNo 的子订单号

    sql - 如何在SQL Server中使用选择查询创建表?

    mysql - 关于 count 和 group_by 的奇怪问题,可能是不同的

    mysql - 选择不同的并获取时间戳差异之和