2017-04-15 1 views
0

Gibt es eine Möglichkeit, diesen Zähler zu erhöhen, aber nicht in den Ergebnissen anzuzeigen? Ich muss mehr Text hinzufügen, bevor ich diese Frage einreichen kann.Wie man einen Zähler in MySQL erhöht, aber in den Ergebnissen nicht anzeigt (ausblendet)

SET @counter = 0; 

    SELECT 
     @counter:[email protected] + 1 AS newindex, -- increment the counter that is in the header 
     survey_report.id, 
     survey_report.survey_row_id as respondent_id, -- the id that copied from the survey table 
     survey_report.qid, 
     question, 
     IF(type IN ('S' , 'K'), 
     (SELECT answer 
      FROM survey_report 
      WHERE qid NOT IN (SELECT qid FROM survey_answers) 
      AND survey_questions.language = lang 
        AND survey_report.id = @counter), 
     (SELECT answer 
      FROM survey_answers 
      WHERE survey_questions.qid = survey_answers.qid 
        AND survey_report.qid = survey_questions.qid 
        AND survey_report.answer = survey_answers.code 
        AND survey_answers.language = lang 
      ) 
     ) AS answer 
     FROM survey_questions 
      JOIN survey_report ON survey_report.qid = survey_questions.qid 
      WHERE survey_questions.sid = survey_id 
      ORDER BY survey_report.survey_row_id, survey_report.id; 

Antwort

0

Sie können immer Ihre aktuelle Abfrage als Unterabfrage wickeln und wählen Sie einfach die Spalten, die Sie wollen:

SET @counter = 0; 

SELECT 
    t.id, 
    t.respondent_id, 
    t.qid, 
    t.question, 
    t.answer 
FROM 
(
    SELECT 
     @counter:[email protected] + 1, 
     survey_report.id, 
     survey_report.survey_row_id as respondent_id, 
     survey_report.qid, 
     question, 
     ... 
    FROM survey_questions 
    INNER JOIN survey_report 
     ON survey_report.qid = survey_questions.qid 
    WHERE survey_questions.sid = survey_id 
) t 
ORDER BY t.respondent_id, 
     t.id; 
0

Zuerst Sie die init in derselben Abfrage setzen können. Um den Zähler zu verstecken, können Sie diesen Trick verwenden.

SELECT 
     IF(survey_report.id = (@counter := (@counter:[email protected]+1)),survey_report.id,survey_report.id) as id 
     survey_report.survey_row_id as respondent_id, -- the id that copied from the survey table 
     survey_report.qid, 
     question, 
     IF(type IN ('S' , 'K'), 
     (SELECT answer 
      FROM survey_report 
      WHERE qid NOT IN (SELECT qid FROM survey_answers) 
      AND survey_questions.language = lang 
        AND survey_report.id = @counter), 
     (SELECT answer 
      FROM survey_answers 
      WHERE survey_questions.qid = survey_answers.qid 
        AND survey_report.qid = survey_questions.qid 
        AND survey_report.answer = survey_answers.code 
        AND survey_answers.language = lang 
      ) 
     ) AS answer 
    FROM survey_questions 
    JOIN survey_report ON survey_report.qid = survey_questions.qid 
    CROSS JOIN (SELECT @counter := 0) AS init 
    WHERE survey_questions.sid = survey_id 
    ORDER BY survey_report.survey_row_id, survey_report.id; 
Verwandte Themen