SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 13.03.2017 15:21:00

sql157
Завсегдатай
Зарегистрирован: 17.03.2016
Сообщений: 97

Можно ли сделать вычисляемое поле со сцепкой текста?

Имеется:
     Таблица 1 - tst_003_tb_01_calcul - основная
     Таблица 2 - tst_003_tb_02_calcul - подчинённая
     Тип связи 1:М
Вопрос
Можно ли сделать вычисляемое поле со сцепкой текста в таблице "tst_003_tb_01_calcul" или в отдельной таблице (запросе)?
Чтобы сцепка текста происходила по условию:
    Если
        поле "pol_1"  таблицы "tst_003_tb_01_calcul"  = поле "pol_1"  таблицы "tst_003_tb_02_calcul"
        и
        поле "idsub"  таблицы "tst_003_tb_01_calcul"  = поле "idsub"  таблицы "tst_003_tb_02_calcul"
    то сцепить значения записи поля "pol_4" таблицы "tst_003_tb_02_calcul" для  соответствующего значения поля "pol_1"  таблицы "tst_003_tb_01_calcul"
   
    Дополнительные условия сцепки:
        - сцепляемые значения были в кавычках (типа "< … >" или другие ) и через запятую и
        - результат сцепки располагался в поле "pol_scepka" таблицы "tst_003_tb_01_calcul"
   
    Пример результата:
    < ТЕКСТ _ ЗАПИСИ pol_4_zp 1>  , < ТЕКСТ _ ЗАПИСИ pol_4_zp 2>  , < ТЕКСТ _ ЗАПИСИ pol_4_zp 3>

Код таблиц


-- Дамп структуры для таблица 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=InnoDB 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=InnoDB 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 */;
 

Отредактированно sql157 (14.03.2017 13:18:13)


Прикрепленные файлы:
Attachment Icon 01.jpg, Размер: 144,285 байт, Скачано: 408

Неактивен

 

#2 13.03.2017 15:29:31

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

GROUP_CONCAT()

Неактивен

 

#3 13.03.2017 19:55:53

sql157
Завсегдатай
Зарегистрирован: 17.03.2016
Сообщений: 97

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

vasya написал:

GROUP_CONCAT()

Что-то сделал... Но выдаёт  ошибку

Код

SELECT t01.`idsub`, t01.`pol_1`, GROUP_CONCAT(t02.`pol_4`) AS `pol_scepka`
FROM `tst_003_tb_01_calcul` t01
INNER JOIN `tst_003_tb_02_calcul` t02 ON t02.`idsub` = t01.`idsub`
GROUP BY t01.`idsub`
 


Ошибка
Ошибка SQL (1064): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT t01.`idsub`, t01.`pol_1`, GROUP_CONCAT(t02.`pol_4`) AS `pol_scepka`
' at line 1 */


Не могли бы подсказать в чём проблема?

Скорректировал скрин вопроса... В Таблице "tst_003_tb_01_calcul" была ошибка

Отредактированно sql157 (13.03.2017 19:56:53)

Неактивен

 

#4 13.03.2017 21:51:39

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

судя по ошибке перед запросом есть что-то ещё

Неактивен

 

#5 13.03.2017 22:21:30

sql157
Завсегдатай
Зарегистрирован: 17.03.2016
Сообщений: 97

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

vasya написал:

судя по ошибке перед запросом есть что-то ещё

Да вроде нет...

Сделал немного по другому..
Код 2

SELECT `t01`.`idsub`, `t01`.`pol_1`, GROUP_CONCAT(DISTINCT`t02`.`pol_4` ORDER BY `t02`.`pol_4` ASC SEPARATOR ' -  ') AS`scepk`
FROM `tst_003_tb_01_calcul` `t01`
LEFT JOIN `tst_003_tb_02_calcul` `t02` ON `t01`.`idsub` = `t02`.`idsub`
GROUP BY `t01`.`idsub`
 


Другая ошибка
Ошибка SQL (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 */


Из код Код 2 убрал поле `t01`.`pol_1`, заработало..
SELECT `t01`.`idsub`, GROUP_CONCAT(DISTINCT`t02`.`pol_4` ORDER BY `t02`.`pol_4` ASC SEPARATOR ' >  ') AS`scepk`
FROM `tst_003_tb_01_calcul` `t01`
LEFT JOIN `tst_003_tb_02_calcul` `t02` ON `t01`.`idsub` = `t02`.`idsub`
GROUP BY `t01`.`idsub`
 


Хотя из Код 1(см. предыдущий пост) убираешь `t01`.`pol_1` всё равно та же ошибка


Вопрос.
Может это прояснит причину проблем с кодом 1?


Прикрепленные файлы:
Attachment Icon 02.jpg, Размер: 153,396 байт, Скачано: 409

Неактивен

 

#6 13.03.2017 22:33:27

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

sql157 написал:

Другая ошибка
Ошибка SQL (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 */

http://sqlinfo.ru/articles/info/18.html


sql157 написал:

Вопрос.
Может это прояснит причину проблем с кодом 1?

нет, подозреваю. что это ошибка вашего клиента
вы по прежнему на hedisql?
попробуйте выполнить в другом клиенте.

Неактивен

 

#7 13.03.2017 23:15:40

sql157
Завсегдатай
Зарегистрирован: 17.03.2016
Сообщений: 97

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

vasya написал:

http://sqlinfo.ru/articles/info/18.html

Статью изучил, но как приметь к своей задаче, что-то мне силёнок не хватает...


sql157 написал:

вы по прежнему на hedisql?
попробуйте выполнить в другом клиенте.

Да.
Пробую в "workbench ".
Ошибка на стадии ввода (см. скрин):
"Syntax error `select` (identifier) is not valid input at this position"

Запустил запрос в "workbench ".
Такая же ситуация:
   Код 1 - ошибка
"Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near "
   Код 2 - без поля `pol_1`- РАБОТАЕТ

Попробовал через консоль Виндовс, но не получается запустить


Извините, что вопросы не по теме, но всё же

Вопрос.
Консоль
1. Правильно ли ввёл запрос?
2. Как запустить запрос?
3. Как вернуться в исходное положение?
Т.к. зарос ввёл. а дальше не могу не удалить не запустить

Статья
4. Как применить статью к моей задаче?

Отредактированно sql157 (14.03.2017 11:41:08)


Прикрепленные файлы:
Attachment Icon 03.jpg, Размер: 101,811 байт, Скачано: 379

Неактивен

 

#8 14.03.2017 12:05:31

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

судя по скрину у вас какой-то неправильный пробел после слова select
возьмите второй запрос и отредактируйте его до первого или наберите первый с клавиатуры (не копируя предыдущий вариант)


в консоли после набора запроса нажимайте энтер


ссылку на статью я дал, чтобы объяснить смысл ошибки 1055
нужно ли применять изложенные в ней методы или нет - зависит от того какие поля вы хотите выбирать

Неактивен

 

#9 14.03.2017 13:20:21

sql157
Завсегдатай
Зарегистрирован: 17.03.2016
Сообщений: 97

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

vasya написал:

наберите первый с клавиатуры (не копируя предыдущий вариант)

Набрал с клавиатуры
Ошибок нет, но ошибка при запуске

Код 3


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
 


Ошибка при запуске Кода 3:
Error Code: 1305. FUNCTION 01tst. GROUP_CONCAT does not exist


Вопрос.
Как избавиться от ошибки?


Прикрепленные файлы:
Attachment Icon 04.jpg, Размер: 220,689 байт, Скачано: 394

Неактивен

 

#10 14.03.2017 13:31:28

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

сделайте пример на sqlfiddle.com

Неактивен

 

#11 14.03.2017 13:56:43

sql157
Завсегдатай
Зарегистрирован: 17.03.2016
Сообщений: 97

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

vasya написал:

сделайте пример на sqlfiddle.com

Вроде сделал...Слёту не получилось разобраться с этим сайтом.
Разбираюсь

Пока, что смог
http://sqlfiddle.com/#!9/241c6f


PS.
Код таблиц продублировал в вопросе

Неактивен

 

#12 14.03.2017 14:10:35

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

у меня ваш запрос отрабатывает без ошибок

mysql> 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\G
*************************** 1. row ***************************
idsub: 1
pol_1: dog 1
scepk: ТЕКСТ _ ЗАПИСИ pol_4_zp 1,ТЕКСТ _ ЗАПИСИ pol_4_zp 2,ТЕКСТ _ ЗАПИСИ pol_4_
zp 3
*************************** 2. row ***************************
idsub: 2
pol_1: dog 2
scepk: ТЕКСТ _ ЗАПИСИ pol_4_zp 4,ТЕКСТ _ ЗАПИСИ pol_4_zp 5,ТЕКСТ _ ЗАПИСИ pol_4_
zp 6
*************************** 3. row ***************************
idsub: 3
pol_1: dog 3
scepk: ТЕКСТ _ ЗАПИСИ pol_4_zp 7,ТЕКСТ _ ЗАПИСИ pol_4_zp 8,ТЕКСТ _ ЗАПИСИ pol_4_
zp 9
3 rows in set (0.00 sec)

на sqlfiddle тоже
http://sqlfiddle.com/#!9/241c6f/2

Неактивен

 

#13 14.03.2017 14:12:53

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

sql157 написал:

Если
        поле "pol_1"  таблицы "tst_003_tb_01_calcul"  = поле "pol_1"  таблицы "tst_003_tb_02_calcul"
        и
        поле "idsub"  таблицы "tst_003_tb_01_calcul"  = поле "idsub"  таблицы "tst_003_tb_02_calcul"

однако в вашем запросе условие только на idsub

Неактивен

 

#14 14.03.2017 16:36:42

sql157
Завсегдатай
Зарегистрирован: 17.03.2016
Сообщений: 97

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

vasya написал:

однако в вашем запросе условие только на idsub

Не понимаю, ваше сообщение...
Пока плаваю в этих вопросах...
Вопрос
Не могли бы разъяснить или скорректировать мой запрос как вы считаете правильным, чтобы выполнить по двум условиям.

Если у вас работает, получается у меня проблемы с клиентом?
Пробую через консоль.
Ввёл запрос.
Нажал "Ввод"
И никакой реакции и консоль просто блокируется: ввести команду не получается, удалить старую команду, тоже нельзя

Вопрос
Консоль
1. Может есть какая особенность при вводе?
2. Как активировать консоль после ввода?

Прилагаю скрин как я запускал консоль

Отредактированно sql157 (14.03.2017 16:37:06)


Прикрепленные файлы:
Attachment Icon 06.jpg, Размер: 560,717 байт, Скачано: 350

Неактивен

 

#15 14.03.2017 16:45:59

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

; после команды поставьте и нажимайте энтер

Неактивен

 

#16 14.03.2017 17:04:00

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

sql157 написал:

Не понимаю, ваше сообщение...
Пока плаваю в этих вопросах...
Вопрос
Не могли бы разъяснить или скорректировать мой запрос как вы считаете правильным, чтобы выполнить по двум условиям.

начните с постановки задачи - действительно ли вам для сцепки нужно совпадение по двум полям?
если да, то сделайте соответствующие тестовые данные, которые будут отображать эту ситуацию (сейчас данные таковы, что если совпадает значение одного поля, то совпадает и второе поле)

и см http://sqlinfo.ru/forum/viewtopic.php?id=3210

Неактивен

 

#17 14.03.2017 17:14:38

sql157
Завсегдатай
Зарегистрирован: 17.03.2016
Сообщений: 97

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

vasya написал:

; после команды поставьте и нажимайте энтер

Получил список всех баз данных:

SHOW DATABASES;


Выбрал базу данных

USE 01tst;


Ввёл запрос
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 1055 (42000): 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"


Прикрепленные файлы:
Attachment Icon 08.jpg, Размер: 200,355 байт, Скачано: 381

Неактивен

 

#18 14.03.2017 17:27:57

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

убирайте t01.pol_1, меняйте режим или переписывайте запрос

Неактивен

 

#19 14.03.2017 18:00:59

sql157
Завсегдатай
Зарегистрирован: 17.03.2016
Сообщений: 97

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

vasya написал:

убирайте t01.pol_1, меняйте режим или переписывайте запрос

Вар 1
Убрал
"t01.pol_1"
Получилось
mysql>

select t01.idsub, 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 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    70
Current database: 01tst

+-------+-------------------------------------------------------------------------------+
| idsub | scepk                                                                         |
+-------+-------------------------------------------------------------------------------+
|     1 | ТЕКСТ _ ЗАПИСИ pol_4_zp 1,ТЕКСТ _ ЗАПИСИ pol_4_zp 2,ТЕКСТ _ ЗАПИСИ pol_4_zp 3 |
|     2 | ТЕКСТ _ ЗАПИСИ pol_4_zp 4,ТЕКСТ _ ЗАПИСИ pol_4_zp 5,ТЕКСТ _ ЗАПИСИ pol_4_zp 6 |
|     3 | ТЕКСТ _ ЗАПИСИ pol_4_zp 7,ТЕКСТ _ ЗАПИСИ pol_4_zp 8,ТЕКСТ _ ЗАПИСИ pol_4_zp 9 |
+-------+-------------------------------------------------------------------------------+
3 rows in set (0.19 sec)

Вар 2
Добавил
- "t01.pol_1"
- "group by t01.idsub, t01.pol_1"

получил
mysql>
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, t01.pol_1;
                                             
ERROR 2006 (HY000): MySQL server has gone away                                                                       
No connection. Trying to reconnect...                                                                                 
Connection id:    73                                                                                                 
Current database: 01tst                                                                                               
                                                                                                                     
+-------+-------+-------------------------------------------------------------------------------+                     
| idsub | pol_1 | scepk                                                                         |                     
+-------+-------+-------------------------------------------------------------------------------+                     
|     1 | dog 1 | ТЕКСТ _ ЗАПИСИ pol_4_zp 1,ТЕКСТ _ ЗАПИСИ pol_4_zp 2,ТЕКСТ _ ЗАПИСИ pol_4_zp 3 |                     
|     2 | dog 2 | ТЕКСТ _ ЗАПИСИ pol_4_zp 4,ТЕКСТ _ ЗАПИСИ pol_4_zp 5,ТЕКСТ _ ЗАПИСИ pol_4_zp 6 |                     
|     3 | dog 3 | ТЕКСТ _ ЗАПИСИ pol_4_zp 7,ТЕКСТ _ ЗАПИСИ pol_4_zp 8,ТЕКСТ _ ЗАПИСИ pol_4_zp 9 |                     
+-------+-------+-------------------------------------------------------------------------------+                     
3 rows in set (0.03 sec)                                                                                             

Вставляю Вар 2 в Workbench
Ошибка
't02'(identifier) is not valid input at this position

Вопрос.
Как исправить ошибку?

Отредактированно sql157 (14.03.2017 18:02:19)


Прикрепленные файлы:
Attachment Icon 09.jpg, Размер: 384,639 байт, Скачано: 386

Неактивен

 

#20 14.03.2017 18:12:38

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

не знаю, у меня скопированный из вашего сообщения запрос отрабатывает в Workbench без ошибки

p.s. у кого-нибудь есть идеи?

Неактивен

 

#21 14.03.2017 18:21:00

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

Mysql query browser как и workbench как и прочие гуевые клиенты порой странно себя ведут. Я предложил бы отладить запрос в родном ванильном mysql-клиенте сперва, дальше попробовать вставить его в код.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#22 14.03.2017 18:32:31

sql157
Завсегдатай
Зарегистрирован: 17.03.2016
Сообщений: 97

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

Проблема решена.
В месте ошибки был перенос строки

Неактивен

 

#23 14.03.2017 22:43:03

sql157
Завсегдатай
Зарегистрирован: 17.03.2016
Сообщений: 97

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

deadka написал:

Я предложил бы отладить запрос в родном ванильном mysql-клиенте сперва, дальше попробовать вставить его в код.

Чё за "ванильный mysql-клиент"?

Неактивен

 

#24 15.03.2017 11:42:23

sql157
Завсегдатай
Зарегистрирован: 17.03.2016
Сообщений: 97

Re: Можно ли сделать вычисляемое поле со сцепкой текста?

Результирующий ответ

ОШИБКА 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.
Т.к. в "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" и открывающим " ' "
Удаляю пробел, ставлю пробел.

Запускаю запрос.
Всё работает

Отредактированно sql157 (15.03.2017 11:42:56)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson