COUNT и GROUP_CONCAT в MySQL

0

У меня есть три таблицы pcn_type, in_e_s_s__p_c_ns, p_c_n_details. Я пытаюсь объединить три разных значения в единый, используя группу concat.

Мой запрос:

SELECT 'browser' AS NAME, CONCAT( '[', CONCAT('{"', pcn_type.name, '",', 
COUNT(JPN_ID), '}'), ']' ) AS DATA FROM p_c_n_details INNER JOIN 
in_e_s_s__p_c_ns RIGHT OUTER JOIN pcn_type ON pcn_type.name = 
p_c_n_details.type AND in_e_s_s__p_c_ns.pcnid= 
p_c_n_details.JPN_ID GROUP BY pcn_type.name

Полученный результат:

NAME    |    DATA
-------------------------------------
browser      [{"Design Change",4}]
browser      [{"EOL",10}]
browser      [{"Process Change",21}]

Ожидание результата:

NAME    |    DATA
--------------------------------------------------------------------
browser      [{"Design Change",4},{"EOL",10},{"Process Change",21}]

Как реструктурировать вышеуказанный запрос, чтобы получить ожидаемый результат.

  • 0
    почему ты хочешь сделать это?
  • 0
    Теперь все, что осталось, это реализовать addlashes в MySQL :)
Показать ещё 3 комментария
Теги:
group-concat

1 ответ

1
Лучший ответ

использовать функцию GROUP_CONCAT

 select name,GROUP_CONCAT(DATA  SEPARATOR ' ') 
from 
(          
    SELECT 'browser' AS NAME, CONCAT( '[', CONCAT('{"', pcn_type.name, '",', 
    COUNT(JPN_ID), '}'), ']' ) AS DATA FROM p_c_n_details INNER JOIN 
    in_e_s_s__p_c_ns RIGHT OUTER JOIN pcn_type ON pcn_type.name = 
    p_c_n_details.type AND in_e_s_s__p_c_ns.pcnid= 
    p_c_n_details.JPN_ID GROUP BY pcn_type.name
) as T group by name
  • 0
    Спасибо тебе, Зайнул.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню