MySQL Group и Concat несколько столбцов - PullRequest
1 голос
/ 30 июня 2011

Мне нужно добавить две или более строки из базы данных MySQL, для этого я использовал функцию CONCAT().

Вот первая таблица classes, в которой хранятся классы PHP.

class_id  class_name
--------  ----------
       1  accountant
       2  attendance

Другая таблица methods, в которой хранятся методы каждого класса.

class_id  method_name            
--------  -----------------------
       1  __construct            
       1  add_expenses

       2  __construct            
       2  attendance_report

И я пишу запрос для объединения.

SELECT 
  `cc`.`class_id`,
  `cc`.`class_name`,
  CONCAT(`cm`.`method_name`, ',') AS `method_name` 
FROM
  `classes` AS `cc` 
  LEFT JOIN `methods` AS `cm` 
    ON `cm`.`class_id` = `cc`.`class_id` 
GROUP BY `cc`.`class_name`;

Что не работает. Мой ожидаемый результат -

class_id  class_name      method_name 
--------  --------------  ------------
       1  accountant      __construct, add_expenses, .... n
       2  attendance      __construct, attendance_report, .... n

Есть идеи?

1 Ответ

3 голосов
/ 30 июня 2011

Используйте

GROUP_CONCAT

вместо

CONCAT

GROUP_CONCAT(cm.method_name) выне нужно передавать запятую как разделитель, который будет принят по умолчанию.

...