2016-04-21 42 views
1

我有一个表命名 CUSTOMERANSWER表 - (customeranswerID(PK)的customerID(FK),surveyID(FK),问题(FK),应答answereddate)获取数据

我试图通过具体的surveyID以questionid获取数据应该等于no。问题表中的问题。

CREATE DEFINER=`root`@`localhost` PROCEDURE `prc_feedbackAnswers`(IN `inputsurveyID` INT(11)) 
BEGIN 
DECLARE _questionID INT; 
DECLARE _questioncount INT; 
SET _questionID = 1; 
SET _questioncount = (SELECT count(questionID) From QUESTIONOPTION Where surveyID = inputsurveyID); 
WHILE (_questionID <=(_questioncount+1)) 
DO 
SELECT surveyID, questionID, answer 
FROM CUSTOMERANSWER 
WHERE surveyID = inputsurveyID AND questionID = _questionID; 
SET _questionID = _questionID + 1; 
END WHILE; 
END 

我得到的输出是

enter image description here

我要的是在一个表中。在这里它给出了surveyID,questionId,每次都回答。

请大家帮忙。

+0

不要的东西在程序中使用while循环。它应该返回单个结果集。 –

回答

0

相反的:

WHILE (_questionID <=(_questioncount+1)) 
DO 
    SELECT surveyID, questionID, answer 
    FROM CUSTOMERANSWER 
    WHERE surveyID = inputsurveyID AND questionID = _questionID; 
    SET _questionID = _questionID + 1; 
END WHILE; 

试试这个:

SELECT surveyID, questionID, answer 
FROM CUSTOMERANSWER 
WHERE surveyID = inputsurveyID 
ORDER BY questionID 
0

我不知道我理解的问题,但你可能想沿着这些线路

SELECT surveyID, questionID, answer 
FROM CUSTOMERANSWER 
join (
    SELECT inputsurveyID, count(questionID) as Q 
    From QUESTIONOPTION 
    Where surveyID = inputsurveyID -- (not required, might be more efficient) 
    group by inputsurveyID 
) as N 
on surveyID = inputsurveyID 
and questionID = Q