我有一个查询,它在本地 wamp 服务器上运行良好,但上传到 mye 网络服务器给我一个错误。看过类似的解决方案,但无法理解它以适应我的查询。
错误:
Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'intranett3.skift.start' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
我有 2 个表,一个带有分配的主表和一个计数转移到该分配的表
ex table vakter (assignement 在我的表中被命名为 oppdrag 并且 start/stop 被命名为 start/slutt)
vakt_id | 赋值 | ... |
---|---|---|
1 | 任务 1 | ... |
前表skift
skift_id | vakt_id | 开始 | 停止 | ... |
---|---|---|---|---|
1 | 1 | 2021-06-21 17:00:00 | 2021-06-21 18:00 | ... |
2 | 1 | 2021-06-21 18:00:00 | 2021-06-21 21:00 | ... |
我想展示
赋值 | 开始 | 停止 |
---|---|---|
任务 1 | 2021-06-21 17:00:00 | 2021-06-21 21:00 |
其中开始日期是 skift 中的最早时间,其中 vakt_id 为 1,停止日期是同一行中的最晚时间。
桌子
CREATE TABLE IF NOT EXISTS `vakter` (
`vakt_id` int(5) NOT NULL AUTO_INCREMENT,
`status` enum('Aktiv','Utsatt','Avlyst','Ubekreftet') NOT NULL,
`lag_id` int(5) NOT NULL,
`type_id` int(5) NOT NULL,
`sted_id` int(5) NOT NULL,
`start` datetime DEFAULT NULL, #this is not populated
`slutt` datetime DEFAULT NULL, #this is not populated
`oppdrag` varchar(255) NOT NULL,
`info` text NOT NULL,
`kunde_id` int(5) NOT NULL,
`kunderef` varchar(255) NOT NULL,
`rapportok` tinyint(1) NOT NULL,
`created_by` int(5) NOT NULL,
`created` datetime NOT NULL,
PRIMARY KEY (`vakt_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1568 DEFAULT CHARSET=latin1;
和表 2
CREATE TABLE IF NOT EXISTS `skift` (
`skift_id` int(11) NOT NULL AUTO_INCREMENT,
`vakt_id` int(5) NOT NULL,
`start` datetime NOT NULL,
`slutt` datetime NOT NULL,
`mannskap` int(5) NOT NULL,
`hospitant` int(5) NOT NULL,
`bil` varchar(255) NOT NULL,
`ressursgruppe` int(5) NOT NULL,
PRIMARY KEY (`skift_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2223 DEFAULT CHARSET=latin1;
我的查询
public function paginatevakter(int $nb_page, int $lagID) {
return $this->select('vakter.oppdrag, vakter.vakt_id')
->selectMin('skift.start', 'sstart')
->selectMax('skift.slutt', 'sslutt')
->join('skift', 'skift.vakt_id = vakter.vakt_id', 'LEFT')
->where('skift.start > now()')
->where('lag_id', $lagID)
->selectCount('skift.vakt_id', 'ant_skift')
->orderBy('skift.start')
->groupBy('vakter.vakt_id')
->paginate($nb_page, 'show');
}
在 group by 中尝试了不同的值。
PS 不能在表一中使用 start /stop(slutt),因为它是从旧数据库中导入的,没有使用这些数据库...