MariaDB服务器版本,以便在'GROUP BY'附近使用正确的语法

eulz3vhy  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(112)

我基于Laravel 9构建了我的项目,并尝试按日期组获取计数数据。我使用DB::raw编写了如下SQL查询:

$rawActive = "
                SELECT
                    SBC.SITE,
                    OPR.OPERATOR,
                    COUNT(*) TMO_COUNT,
                    DATE_FORMAT( TMO.TMO_DATE, '%m%Y' ) BULANTAHUN 
                FROM
                    TOP_TMO TMO
                    INNER JOIN SUBSCRIBER SBC ON TMO.SUBSCRIBER_ID = SBC.ID
                    INNER JOIN OPERATOR OPR ON SBC.SITE_ID = OPR.ID 
                WHERE
                    SBC.SITE_ID = ".$siteId." 
                GROUP BY
                    DATE_FORMAT(
                    TMO.TMO_DATE,
                    '%m%Y')
                ";

                $queryAct = DB::select(DB::raw($rawActive));

siteId来自表单请求。
我搜索了一些解决方案,包括在database.php中编辑'strict' => false,,但仍然没有找到任何解决方案。
我试着return $rawActive,结果是这样的。

SELECT
SBC.SITE,
OPR.OPERATOR,
COUNT(*) TMO_COUNT,
DATE_FORMAT( TMO.TMO_DATE, '%m%Y' ) BULANTAHUN
FROM
TOP_TMO TMO
INNER JOIN SUBSCRIBER SBC ON TMO.SUBSCRIBER_ID = SBC.ID
INNER JOIN OPERATOR OPR ON SBC.SITE_ID = OPR.ID
WHERE
SBC.SITE_ID = 134
GROUP BY
DATE_FORMAT(
TMO.TMO_DATE,
'%m%Y')

如您所见,siteId的显示效果很好。
我也在mysql上尝试了这个查询,它运行良好。
谢谢你的帮助。

hyrbngr7

hyrbngr71#

您需要调整config\database.php,如下所示:

'mysql' => [
    ...
    ....
    'strict' => true,
    'modes' => [
        //'ONLY_FULL_GROUP_BY', // Disable this to allow grouping by one column
        'STRICT_TRANS_TABLES',
        'NO_ZERO_IN_DATE',
        'NO_ZERO_DATE',
        'ERROR_FOR_DIVISION_BY_ZERO',
        'NO_AUTO_CREATE_USER',
        'NO_ENGINE_SUBSTITUTION'
    ],
]

相关问题