2016-04-21 39 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