2010-10-21 2 views
1

J'ai un répéteur asp lire une source de données et il est lié éventuellement à ce code par le code derrièreSQL lit uniquement 1 ID utilisateur lorsque je demande un nom + image à partir de l'ID. Vous vous demandez pourquoi

[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 

Vous vous demandez pourquoi il ne lit pas Users.Picture + Users.First/LastName. Je pense que cela a quelque chose à voir avec INNER JOIN FeaturedStatic ON UserID = Users.UserID, mais pas sûr.

Merci d'avance.

Répondre

0

Vous devriez être en mesure de faire tout cela sur votre insertion sans avoir besoin de la mise à jour.

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

cela a fonctionné! Merci beaucoup – sthomps

0

Je ne vois pas que vous avez besoin de la variable de table, vous pouvez le faire tout en un seul SELECT qui sera plus performant:

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

Il me semble que votre requête peut être simplifié comme ceci:

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 

Quant à votre problème de champs manquants, j'imagine que votre commande de répéteur est configuré pour ne rechercher les colonnes que vous voyez.

Questions connexes