我在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为这个问题提供了解决方案。
答案 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 |
+--------+--------+