【发布时间】:2018-10-07 21:32:12
【问题描述】:
我在 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 只得到一行;
请为这个问题提供一个解决方案。
【问题讨论】:
-
不要尝试在 sql 中执行此操作,产生此输出效率非常低。在 php 代码中进行转换
-
此外,为了容纳任意(未知)数量的
vname值列,您需要动态 SQL,这很不方便。 -
@Shadow Bro 我在上面写过我是在 Codeigniter(一个 PHP 框架)中做的,我也分享了代码。
-
兄弟,您的 php 代码只生成一个 sql 查询并显示其结果。你不能那样做。
-
@IT Sagar :请这个代码:- $this->db->select('DISTINCT(vname), cname, curl'); $this->db->group_by('vname'); $query = $this->db->get('tablename'); $res = $this->db->get(); if($res->num_rows()>0) var_dump($res->result());
标签: php mysql codeigniter group-by codeigniter-3