Повторить данные несколько раз в строке SQL

Все вопросы/проблемы по установке и использовании.
Ответить
nruslan2
Сообщения: 2435
Зарегистрирован: 14 окт 2020, 09:13
Имя: Ruslan
Откуда: Moscow

Повторить данные несколько раз в строке SQL

Сообщение nruslan2 »

Подскажите возможно ли как то решить задачку. Тут вопрос больше к SQL чем к программе Руководителю.

В руководителе есть сущность Работы.
-Наименование работы(тип Имя)
-Дата начала (тип Дата)
-Дата окончания (тип Дата)
(Например запись: Покраска с 01.01.21 по 04.01.21)
и Поле SQL формула: надо чтобы в этом поле в результате вычислений было написано:
"Покраска 01.01.21;Покраска 02.01.21;Покраска 03.01.21;Покраска 04.01.21"

Как написать "Покраска - 4 дня" я знаю, но это не то) А как сделать строчку выше.

Вот как сказать программе продублировать "Покраска" 4 раза с изменением даты (увеличением с шагом +1). По идеи это простой цикл, но в Select нельзя писать цикл)) Есть функция REPEAT она продублирует, но дату не может увеличить только копирует. Может кто знает)
Аватара пользователя
support
Техническая поддержка
Сообщения: 7661
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Повторить данные несколько раз в строке SQL

Сообщение support »

Попробуйте подзапрос с использованием группировкой по дате и функцией GROUP_CONCAT
https://www.w3resource.com/mysql/aggreg ... concat.php
nruslan2
Сообщения: 2435
Зарегистрирован: 14 окт 2020, 09:13
Имя: Ruslan
Откуда: Moscow

Re: Повторить данные несколько раз в строке SQL

Сообщение nruslan2 »

думал вертел так и не получилось или я все таки не понял Вашу идею.

Запись получается одна, те групировать ее смысла нет
GROUP_CONCAT соединяет в себя несколько выводов SQL эт я уже давно уяснил, эту переменную использовал она позволяет получить допустим, если указать дату начала:
"Покраска 01.01.21;Покраска 01.01.21;Покраска 01.01.21;Покраска 01.01.21"
но меня то интересует:
"Покраска 01.01.21;Покраска 02.01.21;Покраска 03.01.21;Покраска 04.01.21"

сижу ломаю голову ничего в голову не лезет(
Ответить