2010-10-21 60 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 

至於你缺少的字段問題,我想象你的中繼器控制配置爲只查找你看到的列。