相关疑难解决方法(0)

使用 CodeIgniter 分组

我在我的项目中使用 CodeIgniter,这是我在模型中的代码

public function group_all_ville(){  
        $this->db->select('*');
        $this->db->from('departement');
        $this->db->join('villes', 'villes.num_dept = departement.num_dept');
        $this->db->group_by('nom_dept'); 
        $query = $this->db->get(); 
        return $query->result();
    }
Run Code Online (Sandbox Code Playgroud)

这是执行后的错误

A Database Error Occurred

Error Number: 1055

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'pneu.departement.id_dept' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

SELECT * FROM `departement` JOIN `villes` ON `villes`.`num_dept` = `departement`.`num_dept` GROUP BY `nom_dept`

Filename: C:/wamp64/www/pneu/system/database/DB_driver.php

Line Number: 691
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的方法,但没有任何结果。谢谢

php mysql join group-by codeigniter

6
推荐指数
1
解决办法
2万
查看次数

MySQL错误:sql_mode = only_full_group_by

我有这个脚本,我习惯于为动态结果做一个简单的投影

    SELECT 
    M.nom_utilisateur, 
    SUM(M.montant_bulletin ) as Montant_Total_BS,
    SUM(M.montant_payer   ) as Montant_Total_payer,
    COUNT(M.ref_bs ) as nbr_bs_total,

(SELECT COUNT(*) FROM mutuelle_bi.`Mutuelle` WHERE nom_utilisateur = M.nom_utilisateur  AND (M.nom_assurence  = "Star" AND M.etat_bs = "Remboursé")) as nbr_bs_total_payer,

(SELECT COUNT(*) FROM mutuelle_bi.`Mutuelle` WHERE nom_utilisateur = M.nom_utilisateur  AND (M.nom_assurence  = "Star" AND M.etat_bs = "Non remboursé")) as nbr_bs_non_payer,

(SELECT COUNT(*) FROM mutuelle_bi.`Mutuelle` WHERE nom_utilisateur = M.nom_utilisateur  AND (M.nom_assurence  = "Star" AND M.etat_bs = "En cours")) as nbr_bs_en_cours,

(SELECT COUNT(*) FROM mutuelle_bi.`Mutuelle` WHERE nom_utilisateur = M.nom_utilisateur  AND …
Run Code Online (Sandbox Code Playgroud)

mysql

5
推荐指数
2
解决办法
1万
查看次数

SQLSTATE[42000]:语法错误或访问冲突:1055

我正在使用 Laravel 5.5 我添加了这个依赖项来制作简单的搜索引擎

https://github.com/nicolaslopezj/searchable

但是当我尝试搜索任何东西时遇到问题

SQLSTATE[42000]: Syntax error or access violation: 1055 'myreview.movies.name' isn't in GROUP BY (SQL: select count() as aggregate from (select movies., max((case when LOWER(movies.name) LIKE car then 150 else 0 end) + (case when LOWER(movies.name) LIKE car% then 50 else 0 end) + (case when LOWER(movies.name) LIKE %car% then 10 else 0 end) + (case when LOWER(movies.description) LIKE car then 150 else 0 end) + (case when LOWER(movies.description) LIKE car% then 50 else 0 end) …

php mysql laravel laravel-5.5

3
推荐指数
1
解决办法
4642
查看次数

1055在ManyToMany关系laravel 5.3中,SELECT列表的表达式#3不在GROUP BY子句错误中

我有这样的Post模型:

class Post extends Model
{
        protected $primaryKey = 'post_id';
        public function tags ()
        {
            return $this->belongsToMany('App\Tag');
        }

}
Run Code Online (Sandbox Code Playgroud)

Tag模型:

class Tag extends Model
{
        public function posts ()
        {
            return $this->belongsToMany('App\Post');
        }

        public function tagsCount ()
        {
            return $this->belongsToMany('App\Post')
                ->selectRaw('count(pt_id) as count')
                ->groupBy('tag_id');
        }

        public function getTagsCountAttribute()
        {
            if ( ! array_key_exists('tagsCount', $this->relations)) $this->load('tagsCount');

            $related = $this->getRelation('tagsCount')->first();

            return ($related) ? $related->count : 0;
        }
}
Run Code Online (Sandbox Code Playgroud)

(pt_id列是post_tag数据透视表中的主键字段).

如您所见,和Models 之间存在ManyToMany关系.Post …

php mysql laravel laravel-5.3

2
推荐指数
1
解决办法
1955
查看次数

laravel 5.5 group by on single column不起作用

即使我将设置"严格"设置为false,laravel 5.5 group by on single column也不起作用..我已经在mysql工作台中尝试了原始查询并且它工作正常但是我在laravel上有这个错误:

SQLSTATE[42000]: Syntax error or access violation: 1055 'hammer.vehicle.consignor_id' isn't in GROUP BY (SQL: select `vehicle`.*, `vehicle_brand`.`vehicle_brand_name`, `vehicle_model`.`vehicle_model_name`, `vehicle_variant`.`vehicle_variant_name`, `vehicle_model`.`year`, `vehicle`.`vehicle_id` from `vehicle` left join `vehicle_brand` on `vehicle_brand`.`vehicle_brand_id` = `vehicle`.`vehicle_brand_id` left join `vehicle_model` on `vehicle_model`.`vehicle_brand_id` = `vehicle_brand`.`vehicle_brand_id` left join `vehicle_variant` on `vehicle_variant`.`vehicle_model_id` = `vehicle_model`.`vehicle_model_id` group by `vehicle`.`vehicle_id` limit 10 offset 0)
Run Code Online (Sandbox Code Playgroud)

这是导致错误的laravel代码

\DB::table('vehicle')
                    ->select('vehicle.*', 'vehicle_brand.vehicle_brand_name', 'vehicle_model.vehicle_model_name', 'vehicle_variant.vehicle_variant_name', 'vehicle_model.year', 'vehicle.vehicle_id')
                    ->leftJoin('vehicle_brand', 'vehicle_brand.vehicle_brand_id', '=', 'vehicle.vehicle_brand_id')
                    ->leftJoin('vehicle_model', 'vehicle_model.vehicle_brand_id', '=', 'vehicle_brand.vehicle_brand_id')
                    ->leftJoin('vehicle_variant', 'vehicle_variant.vehicle_model_id', '=', 'vehicle_model.vehicle_model_id')
                    ->where($where)
                    ->groupBy('vehicle.vehicle_id')
                    ->paginate(10); …
Run Code Online (Sandbox Code Playgroud)

php mysql laravel laravel-5.5

2
推荐指数
1
解决办法
2071
查看次数

A.* 不在 Laravel 查询生成器上带有左连接的 GROUP BY 中

   $search_alls=
    DB::table('a16s as A')
    ->select('A.id')
    // ->select('A.*')
    ->addSelect(DB::raw('SUM(CASE WHEN B.approve = 1 ELSE 0 END) as Yshow'))
    ->leftjoin('a16s_likes as B', function($join) {
        $join->on('A.id', '=', 'B.p_id');
        })
    ->groupBy('A.id')
    ->get();
Run Code Online (Sandbox Code Playgroud)

当我使用上面的 select('A.id') 时效果很好。

但是当我使用 select('A.*') 选择所有 A 列时,出现错误

SQLSTATE[42000]: Syntax error or access violation: 1055 'employee.A.name' isn't in GROUP BY 
Run Code Online (Sandbox Code Playgroud)

PS:employee是我的数据库名称A表上的列是

id name ....
1  john
2  mary
3  susan
Run Code Online (Sandbox Code Playgroud)

如何通过 leftjoin 选择所有列?A.id 列与 B.p_id 列是一对多关系。

mysql group-by left-join laravel laravel-query-builder

2
推荐指数
1
解决办法
1万
查看次数

MYSQL:返回与最高数字关联的值与 GROUP BY

在我的表中,我有按timestamp. 我想返回一个具有最高timestamp.

这有效:

SELECT max(`timestamp`) FROM `messages`
Run Code Online (Sandbox Code Playgroud)

但是,它只返回timestamp值。所以我也尝试选择该message值:

SELECT max(`timestamp`), `message` FROM `messages`
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column 'database.messages.message'; this is incompatible with sql_mode=only_full_group_by
Run Code Online (Sandbox Code Playgroud)

所以我添加了一个 GROUP BY:

SELECT max(`timestamp`), `message` FROM `messages`
GROUP BY `message`
Run Code Online (Sandbox Code Playgroud)

然而,这最终会返回表中的每个值。

我知道 GROUP BY 应该统一相同的条目,我完全不知道为什么在这种情况下我被迫使用它以及如何获取最新的条目而不是所有条目。

mysql sql group-by sql-order-by sql-limit

2
推荐指数
1
解决办法
49
查看次数

MySQL 分组并仅从每个组中选择第一个

我想执行一个查询,仅选择给定组中的最新项目。


在此示例中,我正在跟踪货车:

  • 每次他们返回基地时,check-in都会记录信息 - 里程等......
  • 每次他们送货时,delivery都会记录客户等......

该表让我们了解给定的历史记录van。数据可以通过查询生成或随时存储 - 这不是问题。

 id | checkin_id | delivery_id | van_id
----+------------+-------------+--------
 24 | 15         | NULL        | 3
 25 | NULL       | 28          | 3
 26 | 16         | NULL        | 4
 27 | NULL       | 29          | 3
 28 | NULL       | 30          | 4
 29 | 17         | NULL        | 5
Run Code Online (Sandbox Code Playgroud)

我可以通过使用 - 查询来查看货车的历史记录 ... WHERE van_id=3;

相反,我希望能够获得vans他们最近的“事件”的列表。结果是这样的:

 id | checkin_id …
Run Code Online (Sandbox Code Playgroud)

mysql greatest-n-per-group groupwise-maximum

0
推荐指数
1
解决办法
2万
查看次数