Команда SELECT с условием WHERE и внутренним соединением - PullRequest
4 голосов
/ 01 ноября 2010

Я уверен, что здесь я совершаю тривиальную ошибку, но я искал помощи в этой проблеме, и все, что я могу найти, - это информация об условных ВНУТРЕННИХ СОЕДИНЕНИЯХ.

<РЕДАКТИРОВАТЬ> Проблема в том, что эта хранимая процедура вообще ничего не возвращает.Если я наберу просто:

SELECT TOP (6) UserID, Category, Title, SUBSTRING(Article, 0, 200) AS Summary, DatePosted
FROM ContribContent
WHERE (DateFeatured IS NOT NULL)
ORDER BY DateFeatured DESC

В консоли, я получу возвращенные значения.Значит, это как-то связано с внутренним соединением?

Идея состоит в том, чтобы:

  1. взять контент, который был показан (DateFeatured не равен NULL) и поместить его во временныйtable
  2. получает имена пользователей и изображения из таблицы users и сопоставляет их со значениями во временной таблице, используя значение UserID.
  3. сортирует временную таблицу в порядке даты, в которой каждое сообщение былопризнакам.
  4. выберите шесть лучших записей из таблицы

Вот код:

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

Здесь задействованы две таблицы данных:

Users - таблица, в которой хранятся все пользователи и их информация.

  • UserID INT
  • FirstName varchar (50)
  • LastName varchar(50)
  • Изображение varchar (50)
  • и т. Д. *

ContribContent

  • ContribContentIDINT
  • UserID INT
  • Категория INT
  • Заголовок varchar (100)
  • Статья varchar (MAX)
  • Изображениеvarchar (50)
  • ДатаПоставленная дата
  • ДатаПодобная дата
  • Удаленный бит

СПАСИБО любому, кто может помочь!

1 Ответ

2 голосов
/ 01 ноября 2010

Выполнить только -

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 посмотрите, есть ли у вас совпадающие идентификаторы пользователей, к которым вы присоединяетесь ... ( Подсказка : Возможно, левый ответ - ваш ответ)

...