Используется
МySql - 5,7 x64
Имеется две таблицы
-- Дамп структуры для таблица 01tst.tst_003_tb_01_calcul
CREATE TABLE IF NOT EXISTS `tst_003_tb_01_calcul` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pol_1` char(50) DEFAULT NULL,
`idsub` int(11) DEFAULT NULL,
`pol_3` int(11) DEFAULT NULL,
`pol_scepka` text,
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
-- Дамп данных таблицы 01tst.tst_003_tb_01_calcul: ~3 rows (приблизительно)
/*!40000 ALTER TABLE `tst_003_tb_01_calcul` DISABLE KEYS */;
INSERT INTO `tst_003_tb_01_calcul` (`id`, `pol_1`, `idsub`, `pol_3`, `pol_scepka`) VALUES
(1, 'dog 1', 1, 1, '< ТЕКСТ _ ЗАПИСИ pol_4_zp 1> , < ТЕКСТ _ ЗАПИСИ pol_4_zp 2> , < ТЕКСТ _ ЗАПИСИ pol_4_zp 3> '),
(4, 'dog 2', 2, 1, '< ТЕКСТ _ ЗАПИСИ pol_4_zp 4> , < ТЕКСТ _ ЗАПИСИ pol_4_zp 5> , < ТЕКСТ _ ЗАПИСИ pol_4_zp 6> '),
(7, 'dog 3', 3, 1, '< ТЕКСТ _ ЗАПИСИ pol_4_zp 7> , < ТЕКСТ _ ЗАПИСИ pol_4_zp 8> , < ТЕКСТ _ ЗАПИСИ pol_4_zp 9>');
/*!40000 ALTER TABLE `tst_003_tb_01_calcul` ENABLE KEYS */;
-- Дамп структуры для таблица 01tst.tst_003_tb_02_calcul
CREATE TABLE IF NOT EXISTS `tst_003_tb_02_calcul` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pol_1` char(50) DEFAULT NULL,
`idsub` int(11) DEFAULT NULL,
`pol_3` int(11) DEFAULT NULL,
`pol_4` text,
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
-- Дамп данных таблицы 01tst.tst_003_tb_02_calcul: ~9 rows (приблизительно)
/*!40000 ALTER TABLE `tst_003_tb_02_calcul` DISABLE KEYS */;
INSERT INTO `tst_003_tb_02_calcul` (`id`, `pol_1`, `idsub`, `pol_3`, `pol_4`) VALUES
(1, 'dog 1', 1, 1, 'ТЕКСТ _ ЗАПИСИ pol_4_zp 1'),
(2, 'dog 1', 1, 2, 'ТЕКСТ _ ЗАПИСИ pol_4_zp 2'),
(3, 'dog 1', 1, 3, 'ТЕКСТ _ ЗАПИСИ pol_4_zp 3'),
(4, 'dog 2', 2, 1, 'ТЕКСТ _ ЗАПИСИ pol_4_zp 4'),
(5, 'dog 2', 2, 2, 'ТЕКСТ _ ЗАПИСИ pol_4_zp 5'),
(6, 'dog 2', 2, 3, 'ТЕКСТ _ ЗАПИСИ pol_4_zp 6'),
(7, 'dog 3', 3, 1, 'ТЕКСТ _ ЗАПИСИ pol_4_zp 7'),
(8, 'dog 3', 3, 2, 'ТЕКСТ _ ЗАПИСИ pol_4_zp 8'),
(9, 'dog 3', 3, 3, 'ТЕКСТ _ ЗАПИСИ pol_4_zp 9');
/*!40000 ALTER TABLE `tst_003_tb_02_calcul` ENABLE KEYS */;
Запрос для группировки из приведённых выше таблиц в одну
select t01.idsub, t01.pol_1, GROUP_CONCAT(t02.pol_4) AS scepk
from tst_003_tb_01_calcul t01
inner join tst_003_tb_02_calcul t02
ON t02.idsub = t01.idsub
group by t01.idsub
При запуске запроса появляется ошибка: "Error Code: 1305. FUNCTION 01tst. GROUP_CONCAT does not exist"
Вопрос
Как избавится от ошибки?
Скрин
Сообщение MySQL-СЕРВЕРА об ошибке должно было выглядеть так:
ERROR 1305 (42000): FUNCTION 01tst.GROUP_CONCAT does not exist
Отсутствие SQLSTATE заставляет думать о том, что мы имеем дело с косяком GUI - он не знает про встроенную функцию GROUP_CONCAT, и нафига-то добавляет к её имени функции префикс схемы. Т.е. передаёт серверу запрос вида:
select t01.idsub, t01.pol_1, 01tst.GROUP_CONCAT(t02.pol_4) AS scepk
from tst_003_tb_01_calcul t01
inner join tst_003_tb_02_calcul t02
ON t02.idsub = t01.idsub
group by t01.idsub
Отсюда и проблема...
ОШИБКА 1
По ошибке заявленной в теме.
Запрос опубликованный в теме в workbench читается без ошибок.
Но на текущий момент, после запуска появляется ошибка:
"Error Code: 1055. Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column '01tst.t01.pol_1' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by"
Решение ошибки 1:
Как пишет:
Mike "
В group by надо указывать все колонки которые не учавствуют в групповых функциях, т.е. добавьте t01.pol_1 в group by
"
Добавляем в group by поле "t01.pol_1", т.е. в результате "group by t01.idsub, t01.pol_1".
Всё работает.
ОШИБКА 2
По ошибке указанной на скриншоте http://prnt.sc/ejuvfr
При добавлении данного запроса
"select t01.idsub, t01.pol_1, GROUP_CONCAT(t02.pol_4) AS scepk from tst_003_tb_01_calcul t01 inner join tst_003_tb_02_calcul t02 ON t02.idsub = t01.idsub group by t01.idsub"
в workbench появляется ошибка "Syntax error: '02' (identifier) is not valid input at this position"
Решение ошибки 2.
Переношу код в блокнот.
Кликаю ДВА РАЗА по каждому элементу кода.
Обнаруживается, что элемент кода "t02 ON" выделяете как одно слово, а не два слова по отдельности через пробел. См. скрин http://prnt.sc/ek5bjy
Удаляю пробел, ставлю пробел
Запускаю запрос.
Получаю ошибку: "Error Code: 1054. Unknown column 't02.idsub ' in 'on clause'"
Где если присмотреться, то видно, что в " 't02.idsub ' " между "t02.idsub" и закрывающим " ' " находится пробел, хотя в коде он и должен быть.. Но читается он как одно слово с "t02.idsub".
См. скрин http://prntscr.com/ek5dcp
Удаляю пробел, ставлю пробел.
Запускаю запрос.
Получаю ошибку: "Error Code: 1054. Unknown column ' t01.idsub' in 'on clause'"
Та же проблема, что и в предыдущем случае, только пробел перед словом "t01.idsub" и открывающим " ' "
Удаляю пробел, ставлю пробел.
Запускаю запрос.
Всё работает
PS
В комментарий не поместилось.
Размещаю как ответ.
Если есть замечание по организационным вопросам форума, прошу изменить.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости