SQL только читает 1 UserID, когда я запрашиваю изображение + имя из ID. Интересно, почему - PullRequest
1 голос
/ 22 октября 2010

У меня есть ретранслятор asp, читающий источник данных, и он со временем связан с этим кодом через код позади

[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 / LastName. Я думаю, что это как-то связано с INNER JOIN FeaturedStatic ON UserID = Users.UserID, но не уверен.

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 22 октября 2010

Я не вижу, что вам нужна табличная переменная, вы можете сделать все это в одном SELECT, который будет более производительным:

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 голосов
/ 22 октября 2010

Мне кажется, ваш запрос можно упростить так:

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

Что касается проблемы с пропущенными полями, я могу представить, что ваш элемент управления репитером настроен на поиск только тех столбцов, которые вы видите.

0 голосов
/ 22 октября 2010

Вы должны быть в состоянии сделать все это на своей вставке без необходимости обновления.

   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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...