2010-11-01 75 views
4

我確信我必須在這裏犯一個小錯誤,但我一直在尋找幫助解決這個問題,我能找到的所有信息都是有條件的INNER JOIN。帶有WHERE條件和INNER JOIN的SELECT命令

<編輯>問題是這個存儲過程根本沒有返回任何東西。如果我只輸入:

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爲NOT NULL) ,並把它所有到一個臨時 表
  2. 得到用戶名和圖片,並使用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 

主要涉及兩個數據表:

用戶 - 表中存儲的所有用戶和他們的信息。

  • 用戶ID INT
  • 姓VARCHAR(50)
  • 姓氏VARCHAR(50)
  • 圖片VARCHAR(50)
  • 等...

ContribContent

  • ContribContentID INT
  • 用戶ID INT
  • 類別INT
  • 標題爲varchar(100)
  • 文章VARCHAR(MAX)
  • 圖片VARCHAR(50)
  • DatePosted日期
  • DateFeatured日期
  • 刪除位

感謝給任何人誰可以幫忙!只有

+5

而問題是......? – 2010-11-01 17:02:54

+1

Drumroll ........ – Vishal 2010-11-01 17:07:34

+0

哇,這是我的愚蠢..對不起啊哈,只是做了一個編輯。 – mitchellbutler 2010-11-01 17:08:02

回答

2

運行 -

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看看你是否有匹配的用戶名你加入...(提示:左加入也許你的答案)

+0

不,沒有數據返回。爲了迴應班尼斯特的評論,我只寫了一個快速編輯。如果您在編輯中籤出代碼,則該代碼正在返回值。那麼內連接有什麼問題嗎? – mitchellbutler 2010-11-01 17:10:17

+0

哈哈完美,左連接工作,但返回null列加入列。我決定檢查用戶表,並找出用戶標識由於某種原因從5開始。唯一有特色的內容有一個UserID值爲2.我很難過,這是一個愚蠢的錯誤。我從另一個開發人員手中接管了這個網站,所以我不知道。非常感謝。 – mitchellbutler 2010-11-01 17:16:28

+0

此外,可能希望使用'Isnull(ContribContent.UserID,0)作爲UserId'併爲您的需要分配一個值(在這種情況下爲'0')。很高興能幫到您! – Vishal 2010-11-01 17:23:46