powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбрать последовательность по двум колонкам со стартовым значением.
9 сообщений из 9, страница 1 из 1
Выбрать последовательность по двум колонкам со стартовым значением.
    #39736411
X-rayboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Например, есть последовательность, по какому-то правилу созданная:
Таблица `СортДата`
Сортверхниз102125134140153
Например, мне нужно вывести последовательность желательно единым запросом, но что-то не приходит ничего хорошего.
А приходит только подобное:
Код: sql
1.
2.
SELECT @a:=0;
SELECT т.`верх` as верх, (@a := т.`низ`) as низ FROM `СортДата`as т WHERE т.`верх` = @a LIMIT 20;


Подобный запрос выводит следующее:
верхниз022553
Всё бы хорошо, но почему-то обрывается последовательность и до конца не доходит. По сути он должен дойти до конца:
верхниз3440
И, по сути зациклиться. Но даже если поменять на 999, то ничего не меняет.

1. Почему запрос обрывается?
2. Есть ли этому готовое решение и как его называют чтобы найти?
...
Рейтинг: 0 / 0
Выбрать последовательность по двум колонкам со стартовым значением.
    #39736414
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-rayboy,

что такое "последовательность" в вашей терминологии?
...
Рейтинг: 0 / 0
Выбрать последовательность по двум колонкам со стартовым значением.
    #39736422
X-rayboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftX-rayboy,

что такое "последовательность" в вашей терминологии?
Последовательность - признак по следу - это шаг подчинённый какому-то правилу.
Следы это значение в строках в двух колонках (2, 3 в данности).
В данности правило такое, что я получив верх опускаюсь вниз. Подобно, получив низ, можно подыматься вверх.
Иные колонки (добавочные), кроме этих двух, нецелесообразно.
...
Рейтинг: 0 / 0
Выбрать последовательность по двум колонкам со стартовым значением.
    #39736430
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, понял, это цепочка, а не последовательность.

В версии 8.0 можно через CTE .
В более ранних версиях теоретически тоже можно, но это на грани черной магии. Подробностей уже не помню.
...
Рейтинг: 0 / 0
Выбрать последовательность по двум колонкам со стартовым значением.
    #39736437
X-rayboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftАга, понял, это цепочка, а не последовательность.

В версии 8.0 можно через CTE .
В более ранних версиях теоретически тоже можно, но это на грани черной магии. Подробностей уже не помню.
Магия это то, что идёт вроде как и выдаёт результат, а потом бац и стопарь. Никакой ошибки не выдаёт.
Пусть оно объяснит где у неё поломалось по "середине"? Может калькулятор сломался? В декрет кто-то уволился и считать некому стало?
Если бы оно не работало, то и не началось бы. А тут вроде как на полшышечки что-то отобразило ... и бац на те ... остеохондроз ...
...
Рейтинг: 0 / 0
Выбрать последовательность по двум колонкам со стартовым значением.
    #39736440
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-rayboyМагия это то, что идёт вроде как и выдаёт результат, а потом бац и стопарь. Никакой ошибки не выдаёт.
Пусть оно объяснит где у неё поломалось по "середине"? Может калькулятор сломался? В декрет кто-то уволился и считать некому стало?
Если бы оно не работало, то и не началось бы. А тут вроде как на полшышечки что-то отобразило ... и бац на те ... остеохондроз ...Не, это вы про обычную магию... :)
А та "магия" реально работала. И в тот единственный раз, когда я осилил в ней разобраться, она была вполне исправно и надежно работающей. Но потом забыл, как это работает, а разбираться повторно уже не стал.
...
Рейтинг: 0 / 0
Выбрать последовательность по двум колонкам со стартовым значением.
    #39736445
X-rayboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. От части я понял почему идёт обрыв. Потому что нет повторного (с начала) поиска значения. База единожды пробегает по таблице и если по пути ей ничего не встретилось, то значит не судьба - печалька.
...
Рейтинг: 0 / 0
Выбрать последовательность по двум колонкам со стартовым значением.
    #39736459
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если версия маловата, то пиши SP.
...
Рейтинг: 0 / 0
Выбрать последовательность по двум колонкам со стартовым значением.
    #39737801
X-rayboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну что же, поставил MySQL 8.0, правда переход с MySQL 5 привёл к отторжению таблиц и уже многие часы восстанавливается база.
Вот решение на MySQL 8.0
Код: plsql
1.
2.
3.
4.
5.
6.
WITH RECURSIVE cte (n, k) AS (
	SELECT 0, 0 -- начальный параметр
	UNION ALL
	SELECT n+1, t.`низ` FROM cte, дано t WHERE n < 8 AND t.верх = k
	)
SELECT * FROM cte;


где n - это количество повторов, в примере ограничено 8-ю;
где k - это задаваемый начальный параметр.

Может итогово можно оптимизировать запрос, но пока такого не умею.

Выполнение данного запроса выводит следующее:
nk001225334450627583
Так как данных мало и низ совпадает с верхом, то это приводит к зацикливанию, но ограничено 8-ю.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбрать последовательность по двум колонкам со стартовым значением.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]