Я пытаюсь вернуть результаты опроса в формате JSON.Мой первый SQL это
SELECT
fa.pollQuestion_id,
q.title,
JSON_OBJECT(
'text', qo.title,
'total', COUNT(fao.pollQuestionOption_id)
) values
FROM pollFillAnswers fa
INNER JOIN pollFills f ON fa.pollFill_id = f.pollFill_id
INNER JOIN pollQuestions q ON fa.pollQuestion_id = q.pollQuestion_id
INNER JOIN pollFillAnswerOptions fao ON fao.pollFillAnswer_id =
fa.pollFillAnswer_id
WHERE f.poll_id = 17 AND fa.type IN (3,4,5)
GROUP BY fao.pollQuestionOption_id;
Этот SQL возвращает что-то вроде этого:
pollQuestion_id значения заголовка
163 Вопрос 1 {"текст": "Нет", "всего": 599}
163 Вопрос 1 {" text ":" Si "," total ": 258}
Во втором SQL-запросе я использую GROUP BY pollQuestion_id
и GROUP_CONCAT(values)
для агрегированиярезультаты с этим SQL
SELECT JSON_OBJECT(
'title', result.title,
'values', GROUP_CONCAT(values)
) answers
FROM (
SELECT
q.title,
JSON_OBJECT(
'text', qo.title,
'total', COUNT(fao.pollQuestionOption_id)
) values
FROM pollFillAnswers fa
INNER JOIN pollFills f ON fa.pollFill_id = f.pollFill_id
INNER JOIN pollQuestions q ON fa.pollQuestion_id = q.pollQuestion_id
INNER JOIN pollFillAnswerOptions fao ON fao.pollFillAnswer_id = fa.pollFillAnswer_id
WHERE f.poll_id = 17 AND fa.type IN (3,4,5)
GROUP BY fao.pollQuestionOption_id
) AS result
GROUP BY result.pollQuestion_id;
Результат выглядит следующим образом:
163 {"title": "Question 1", "values": "{\"text\": \"No\", \"total\": 599},{\"text\": \"Si\", \"total\": 258}"}
group_contact()
добавляет косые черты во все строки в JSON, почему?Я пытаюсь удалить косую черту с помощью REPLACE()
или JSON_UNQUOTES()
, но не могу устранить это поведение.