关于php:Multiple join with one group by

Multiple join with one group by

我需要加入并从 3 个表中获取所有数据,并且需要使用特定的表字段名称对其进行分组。我正在使用 codeigniter 和 sql server

我的查询:

1
2
3
4
5
$this->db->select('table1.*,table2.*,table3.*');
$this->db->from('table1');
$this->db->join('table2','table1.id = table2.id');
$this->db->join('table3','table1.sid = table3.sid');
$this->db->group_by('table1.field_name');

有可能吗?

收到此错误:

字段名在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。


通常,当您在 SQL Server 中执行 Group By 时,您可以在 Select 语句中包含的列仅限于 Group By 子句中的列,以及常量或聚合函数。所以你可以这样做:

1
2
3
Select Table1.field_name, Count(*) as ColumnCount
From Table1
Group By Table1.field_name

但您不能包含 Table1 中的任何其他列,除非它们在 Group BY 中。


在模型中使用它

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public function anyfunction($table3_id)
        {
            $this->db->select('*');
            $this->db->from('table1');
            $this->db->join('table2', 'table2.table2_id=table2.id', 'left');
            $this->db->join('table3', 'table3.table1_id=table1.table1_id', 'left');
            $this->db->where('table3.table1_id',$table3id);
            $this->db->order_by('table3.field_name','asc');        
            $query = $this->db->get();
            if($query->num_rows() != 0)
            {
                return $query->result_array();
            }
            else
            {
                return false;
            }
        }

我希望它对你有用...