获取所有项目按特定列值分组

时间:2018-04-27 05:07:14

标签: php mysql codeigniter group-by codeigniter-3

我在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  |  

简而言之,我试图通过 vnames 显示所有 cnames 组。

我在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());

由于var_dump(),我每 vname 只获得一行;

Plesae为这个问题提供了解决方案。

1 个答案:

答案 0 :(得分:1)

使用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      |
+--------+--------+