Получить все элементы сгруппированы по определенным значениям столбца - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть таблица, как показано ниже в MYSQL:

cname | vname | curl
---------------------
A     | 1     | url1
A     | 2     | url2
B     | 1     | url3
B     | 3     | url4
C     | 2     | url5
C     | 3     | url5
C     | 4     | url6
D     | 2     | url7

И я хочу показать результат как под:

1  |  2  |  3  |  4
-------------------
A  |  A  |  B  |  C
B  |  C  |  C  |
   |  D  |  

Короче, я пытаюсь показать все группы cnames по vnames .

Я попробовал следующий код в Codeigniter:

$this->db->distinct();
$this->db->select('vname, cname, curl');
$this->db->from('tablename');
$this->db->order_by('cname');
$this->db->group_by('vname');
$res = $this->db->get();
if($res->num_rows()>0)
    var_dump($res->result());

Я получаю только одну строку на vname в результате var_dump();

Plesae предлагает решение этой проблемы.

1 Ответ

0 голосов
/ 27 апреля 2018

Использование GROUP_CONCAT

$this->db->select('vname,GROUP_CONCAT(cname SEPARATOR ",") as cname');
$this->db->from('tablename');
$this->db->group_by('vname');
$res = $this->db->get();

Выход:

+--------+--------+
| vname  | cname  |
+--------+--------+
| 1      | A,B    |
| 2      | A,C,D  |
| 3      | B,C    |
| 4      | C      |
+--------+--------+ 
...