dongzhi4073 2018-04-27 05:07
浏览 119

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

I have a table as below in 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

And I want to show the result as under:

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

In short, I am trying to show all the cnames group by vnames.

I have tried the following code in 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());

I am getting only one row per vname as a result of var_dump();

Plesae provide a solution for this problem.

  • 写回答

1条回答 默认 最新

  • dtc99987 2018-04-27 05:42
    关注

    Use 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();
    

    Output :

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

报告相同问题?

悬赏问题

  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100