关于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 中。
相关讨论
- 感谢您的回复。所以我们需要在我们的用户组中指定选择查询中的所有列。这个策略在mysql中是否相同?
- 我无法与 MySql 交谈。您应该在问题中包含一个 MySql 标记,以便有人可以为 MySql 解决这个问题。
- 抱歉,所以我们需要在我们的用户分组依据的分组依据中指定选择查询中的所有列?
- @youv - 是的,但这样做没有任何意义。您不可能希望对每个表中的每一列进行聚合。在我看来,您对 Group By 的功能以及何时/为什么要使用它并没有真正的了解。
- 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; } } |
我希望它对你有用...
相关讨论
- 这行得通,再次非常感谢你,我可以知道这是什么原因吗?
THE END
二维码