2010-10-21 65 views
1

我有一个asp中继器读取一个数据源,它的通过代码最终链接到该代码 背后SQL只读取1个用户ID当我从ID请求图片+名称时。想知道为什么

[dbo].[GetFeatStatic] 
AS 
BEGIN 

    DECLARE @FeaturedStatic TABLE (
    UserID INT, 
    UserTitle varchar(50), 
    Title varchar(50), 
    Summary text, 
     DatePosted date, 
    FirstName varchar(50), 
     LastName varchar(50), 
    Picture varchar(100) 
    ) 

    INSERT INTO @FeaturedStatic 
     SELECT TOP 6 StaticContent.UserID, StaticContent.UserTitle, StaticContent.Title, SUBSTRING(StaticContent.Article, 0, 200) AS Summary, StaticContent.DatePosted, 'FirstName', 'LastName', 'Picture' 
     FROM StaticContent 
     INNER JOIN FeaturedStatic ON FeaturedStatic.ContentID = StaticContent.ContentID 
     ORDER BY FeaturedStatic.DateFeatured DESC 

     UPDATE @FeaturedStatic 
     SET 
     FirstName = Users.FirstName, 
     LastName = Users.LastName, 
     Picture = Users.Picture 
     FROM Users 
     INNER JOIN FeaturedStatic ON UserID = Users.UserID 

    SELECT * FROM @FeaturedStatic 
END 

想知道为什么它不会读取Users.Picture + Users.First /姓氏。我认为这与INNER JOIN FeaturedStatic ON UserID = Users.UserID有关,但不确定。

在此先感谢。

回答

0

您应该可以在插入时完成所有操作,而无需更新。

INSERT INTO @FeaturedStatic 
     SELECT TOP 6 StaticContent.UserID, StaticContent.UserTitle, StaticContent.Title, SUBSTRING(StaticContent.Article, 0, 200) AS Summary, StaticContent.DatePosted, Users.FirstName, Users.LastName, Users.Picture 
     FROM StaticContent 
     INNER JOIN FeaturedStatic 
      ON FeaturedStatic.ContentID = StaticContent.ContentID 
     INNER JOIN Users 
      ON StaticContent.UserID = Users.UserID 
     ORDER BY FeaturedStatic.DateFeatured DESC 
+0

它的工作!非常感谢 – sthomps 2010-10-24 03:02:25

0

我没有看到你所需要的表变量,你可以做到这一切在一个单一的选择,这将是更好的性能:

SELECT TOP 6 StaticContent.UserID, StaticContent.UserTitle, StaticContent.Title, SUBSTRING(StaticContent.Article, 0, 200) AS Summary, StaticContent.DatePosted, Users.FirstName, Users.LastName, Users.Picture 
FROM StaticContent 
    INNER JOIN FeaturedStatic ON FeaturedStatic.ContentID = StaticContent.ContentID 
    INNER JOIN Users ON FeaturedStatic.UserID = Users.UserID 
ORDER BY FeaturedStatic.DateFeatured DESC 
0

它看起来对我来说,你的查询可以简化如下:

SELECT TOP 6 SC.UserID, SC.UserTitle, SC.Title, SUBSTRING(SC.Article, 0, 200) AS Summary, SC.DatePosted, U.FirstName, U.LastName, U.Picture 
FROM StaticContent SC 
INNER JOIN FeaturedStatic FS ON FS.ContentID = SC.ContentID 
INNER JOIN Users U ON SC.UserID = U.UserID 
ORDER BY FS.DateFeatured DESC 

至于你缺少的字段问题,我想象你的中继器控制配置为只查找你看到的列。