2012-12-21 115 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