質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
GROUP BY

GROUP BYとはSQL文のひとつで、SELECT文において特定の列の値が等しい行ごとに表をグループ化します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2068閲覧

【SQLエラー】sql_mode=only_full_group_byが無効にならない

yamadan

総合スコア2

GROUP BY

GROUP BYとはSQL文のひとつで、SELECT文において特定の列の値が等しい行ごとに表をグループ化します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/05/26 06:29

前提・実現したいこと

ECCUBE2.17でサイトを作成しており、商品詳細画面に遷移した際にSQLエラーが発生しました。
sql_modeが原因かと思い、設定を消しましたが一向にエラーが直りません。
解決方法をご存知の方がいらっしゃればご教授いただきたいです。

発生している問題・エラーメッセージ

MDB2 Error: unknown error _doQuery: [Error message: Could not execute statement] [Last executed query: PREPARE mdb2_statement_mysqli_404d36d3088c434bbcac4f6189c72b853dee2b4fb3 FROM 'SELECT cc.classcategory_id, color1, color2, is_multicolor, image1, image2, image3, image4, image5, image6, image7, image8, (CASE WHEN stock=0 AND p_class.classcategory_id2=0 THEN CONCAT(cc.name, \'(品切れ中)\') ELSE cc.name END) AS name FROM dtb_products_color p_color INNER JOIN dtb_products_class p_class ON p_color.classcategory_id = p_class.classcategory_id1 LEFT JOIN dtb_classcategory cc ON p_color.classcategory_id = cc.classcategory_id WHERE cc.del_flg = 0 AND p_class.del_flg = 0 AND product_id = ? GROUP BY cc.classcategory_id ORDER BY cc.`RANK` desc '] [Native code: 1055] [Native message: Expression #13 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test1.p_class.stock' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by]

試したこと

my.iniのsql_modeを空にしました。(sql_mode="")
SHOW VARIABLES LIKE 'sql_mode';
SELECT @@GLOBAL.sql_mode;
SELECT @@session.sql_mode;
でコマンドを売っても、空で帰ってきます。

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sql_mode | |
+---------------+-------+

補足情報(FW/ツールのバージョンなど)

php7
mysql5.7
ECCUBE2.17

よろしくお願いします…。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

すみません、解決しました。
\class\db\dbfactory\SC_DB_DBFactory_MYSQL.php
$objQuery->exec("SET SESSION sql_mode = 'ANSI'");
をコメントアウトしたら表示することができました。

投稿2020/05/26 06:41

yamadan

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akirangt314

2021/07/27 04:51

見ず知らずの人がカスタマイズしたEC-Cube 2.11系のサイトを2.17へアップグレードしようとして、同じ問題にぶつかりました。ANSI準拠のSQLにするのが理想ですが、クライアントにそのコストを負担してもらえないのが現実で、できるだけ改修点を増やさないようにしようと、この方法を採用しました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問