2012-12-21 116 views
0
ALTER PROCEDURE [dbo].[SpFillAnswer] 
    @q_Id nvarchar(50) 
AS 
BEGIN 
    --SET NOCOUNT ON; 

    SELECT Answer, Date_Time, Name 
    FROM Answers, RegUsers 
    WHERE Answers.Q_Id = @q_Id 
     AND RegUsers.UserId = (SELECT Answers.User_Id FROM Answers WHERE Answers.Q_Id = @q_Id); 
END 

我有三個表,RegUsersAnswersQuestions錯誤而執行存儲過程

我必須在同一時間,我必須找出誰張貼的答案,這是從RegUsers表中取出的User NameAnswers表中提取AnswerDate_Time

爲此,我嘗試了以下代碼,該子查詢對於1結果正確運行。

但它給我一個錯誤,當一個以上的結果,從子查詢出來:

(Select Answers.User_Id from Answers where Answers.Q_Id = @q_Id) 

請幫助我,建議我另一個子查詢我想要的結果。

Thanxx。

回答

1

更改=IN

Select Answer, Date_Time, Name from 
Answers, RegUsers 
where Answers.Q_Id = @q_Id 
and RegUsers.UserId IN (
    Select Answers.User_Id 
    from Answers 
    where Answers.Q_Id = @q_Id); 
+0

感謝名單院長回答。是的,現在「IN」正在工作,但我只有兩個用戶在相同的問題上回答。但在排除此查詢後,我得到4個結果而不是2.每個用戶名都重複兩次,每個答案都是。 – Swapnil

+0

使用舊的'from 答案,RegUsers'語法的危險。您在Answers和RegUser之間沒有連接。使用JOIN ... ON語法重寫此查詢,您的重複問題將消失。 – DeanGC

+0

現在我想.....選擇接聽,DATE_TIME,從答案姓名加入RegUsers上[email protected]_Id和RegUsers.UserId IN(從答案中選擇其中Answers.User_Id [email protected]_Id) \t;但仍然發生同樣的重複.. – Swapnil