Можно ли сделать "интеллектуальный" AUTO_INCREMENT?

Статус
В этой теме нельзя размещать новые ответы.

Фанат

oncle terrible
Команда форума
untied
Однако, тема постепенно сваливается из баз данных в офтопик, так что предлагаю закруглиться.
дело хозяйское.
лично я хотел, как раз, предложить закрыть эту тему, как бессмысленную в свете поиска решения средствами базы данных, и открыть новую, для обсуждения не криворуких способов решения проблемы.
но если ты считаешь, что обсуждать здесь нечего, то не смеем тебя задерживать.
 

antson

Новичок
Партнер клуба
если средствами мускула нужно просто до вставлять пропущенные значения, то можно так

$startId= 100;
$query="
SELECT a.i,

(case when isnull(b.title) then 'ваша ссылка могла быть здесь' else b.title end) as t
остальные поля аналогично

FROM
( select $startId as i
union select $startId+1
union select $startId+2
..
union select $startId+9
)a left outer join youtable b on i=id";
 

bgm

 
untied
На самом деле задача к базам данных имеет очень отдалённое отношение. Вернее - никакого.

Самое простое решение: уйти от постраничной навигации по номеру страницы, а ссылки выбирать исходя из ID записи. Т.е. считаешь, сколько целых страниц есть до данного ID, а потом с лимитом делаешь выборку.
 

Сергей Тарасов

Профессор
В СУБД, где по каким-то причинам нет полей типа AUTO INCREMENT такая функциональность реализуется через триггер. Так, что если уж ОЧЕНЬ хочется извратиться, то можно в триггере реализовать какой тебе угодно алгоритм формирования значения "по умолчанию".
Но подчеркиваю, это если охота изврата :)))
 

untied

Сдвинутый новичок
Автор оригинала: bgm
untied
На самом деле задача к базам данных имеет очень отдалённое отношение. Вернее - никакого.

Самое простое решение: уйти от постраничной навигации по номеру страницы, а ссылки выбирать исходя из ID записи. Т.е. считаешь, сколько целых страниц есть до данного ID, а потом с лимитом делаешь выборку.
А каким образом можно посчитать, сколько целых страниц до данного ID? :confused: При условии, что ID создается автоинкрементом, и какие-то записи могут быть удалены... :confused:
Пожалуй, это не самое простое решение, а самое странное из предложенных...

Сергей Тарасов, да, да! Извратиться ОЧЕНЬ хочется!!!
Каким образом можно реализовать в триггере алгоритм формирования значения по умолчанию?
 

bgm

 
untied
А подумать? Намекаю: ID создаются автоинкрементом, т.е. могут быть отсортированы по возрастанию. Соответственно можно посчитать количество ID, которые меньше выбранного. И, какое удивление, разделить его на количество ссылок на странице. А потом обычный лимит.
 

untied

Сдвинутый новичок
Автор оригинала: bgm
untied
А подумать? Намекаю: ID создаются автоинкрементом, т.е. могут быть отсортированы по возрастанию. Соответственно можно посчитать количество ID, которые меньше выбранного. И, какое удивление, разделить его на количество ссылок на странице. А потом обычный лимит.
Не годидзе!
Возникает ровно та же проблема с перескоком ссылок со страницы на страницу при удалении идущих ранее по списку.
 

Сергей Тарасов

Профессор
untied

Да как тебе хочется, так и извращайся. Делаешь триггер на BEFORE INSERT к примеру и делаешь с NEW.`id` все, что тебе заблогорассудится.
 

bgm

 
untied
Ёлы-палы. У тебя нет понятия номера страницы, понимаешь? И нет ссылки на страницу. А вот отображение страницы по ID одной из ссылко на ней - есть. Понимаешь?

А от "перескока" (т.е. изменения внешнего вида) ты никак всё равно не избавишься.
 

untied

Сдвинутый новичок
Автор оригинала: bgm
untied
Ёлы-палы. У тебя нет понятия номера страницы, понимаешь? И нет ссылки на страницу. А вот отображение страницы по ID одной из ссылко на ней - есть. Понимаешь?

А от "перескока" (т.е. изменения внешнего вида) ты никак всё равно не избавишься.
Не понимаю! :)
Исторически сложилось так, что номера страниц у меня есть.
Для примера:
w w w.nech.ru/useful/lnk_sitlist.html?g_id=5
Номера страниц просто надо выводить.

От перескока ссылок я уже избавился, несколько кривым методом, но работающим.
 

Фанат

oncle terrible
Команда форума
bgm
но задача состоит именно в избавлении от перескока ссылок.
и интересно её решить.поскольку задача реальная и обоснованная

вот только стремление автора решить её исключительно кривыми методами - огорчает.
 

untied

Сдвинутый новичок
OFF:
*****, отнюдь!
Если б я действительно хотел кривых методов, я б успокоился на достигнутом и ничего бы здесь не спрашивал. ;)
 

bgm

 
untied
Ну так избавься от того, что исторически сложилось :)
Ведь тебе что надо - чтобы по ссылке на страницу у владельца ресурса всегда показывалась именно та страница, где расположена его ссылка. Правильно? Значит самый прямой способ - это страницу рассчитывать исходя из ID ссылки, а не номера самой страницы.

P.S. Не надо кривым методом избавляться. Надо думать и правильно решать задачу :)
 

Фанат

oncle terrible
Команда форума
bgm
а как ее рассчитывать?
вот я придумать не могу.
 

bgm

 
*****
Как я понимаю задача состоит в том, чтобы по ссылке владелец ресурса видел ту страницу, где ссылка на его ресурс. Разве нет?
 

untied

Сдвинутый новичок
Автор оригинала: bgm
untied
Ну так избавься от того, что исторически сложилось :)
Ведь тебе что надо - чтобы по ссылке на страницу у владельца ресурса всегда показывалась именно та страница, где расположена его ссылка. Правильно? Значит самый прямой способ - это страницу рассчитывать исходя из ID ссылки, а не номера самой страницы.
Ты бы мой линк открыл и посмотрел...
Помимо того, что ссылку надо правильно показать владельцу, ее надо показать поисковому роботу, сканирующему сайт и живому посетителю сайта, который (вдруг!!!) надумает заглянуть в каталог ссылок.
И про то, что URL страницы со ссылкой должен быть один для всех вариантов я тоже уже писал (см. дикуссию выше).
 

Фанат

oncle terrible
Команда форума
не совсем
надо, чтобы при _стандартной_ процедуре просмотра страниц сайта была видна ссылка.
чтобы не спецюадрес давался хозяину ссылки, а обычный.
 

bgm

 
Автор оригинала: *****
bgm
а как ее рассчитывать?
вот я придумать не могу.
1) Считаем, сколько ссылок всего есть до данного ID
2) Считаем, сколько есть целых страниц до данного ID
3) Делаем обычный лимит
Нет?
 

Фанат

oncle terrible
Команда форума
а вообще, че-то я подзабыл свою ненависть ко всем этим каталогизаторам-оптимизаторам, которые дерьмом весь инет загадили - ничего стоящего не найти. только эти самые ссылки на ссылки.
прикрыть, наверное, надо.
хай мучается.
 

untied

Сдвинутый новичок
OFF:
Ф., я не оптимизатор (их я тоже не люблю). Просто приходится вертеться, чтоб сайт хоть как-то где-то был виден.

Сергей Тарасов, спасибо за идею!
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху