【问题标题】:Multiple join with one group by多个加入一个组
【发布时间】:2016-09-29 09:32:27
【问题描述】:

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

我的查询:

$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 子句中。

【问题讨论】:

    标签: php sql-server codeigniter


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢回复。所以我们需要在我们的user group by的group by中指定select查询中的所有列。这个策略在mysql中是否一样?
    • 我无法与 MySql 对话。您应该在问题中包含一个 MySql 标记,以便有人可以为 MySql 解决这个问题。
    • 对不起,所以我们需要在我们的用户分组依据的分组依据中指定选择查询中的所有列?
    • @youv - 是的,您会这样做,但这样做没有任何意义。您不可能希望对每个表中的每一列进行聚合。在我看来,您对 Group By 的作用以及何时/为什么要使用它并没有真正的了解。
    • Group by 是根据特定字段名称对记录进行分组的东西,对吗?当我使用不带连接的查询时,我可以这样做。我怀疑,当我尝试通过使用字段进行分组时我提到的错误,我不知道原因
    【解决方案2】:

    在模型中使用它

    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;
                }
            }
    

    我希望它对你有用...

    【讨论】:

    • 这个工作,再次非常感谢你,我可以知道这是什么原因,我的查询有什么问题为什么没有工作..如果你这么好请帮忙:)
    猜你喜欢
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 2012-10-18
    相关资源
    最近更新 更多